Vous n'êtes pas identifié(e).

#1 11/01/2011 15:55:27

Gestion de doublons

Bonjour,

j'ai une table t_mc contenant les champs id, mc, ponderation, compteur.
Le champ mc contient des doublons que je souhaite eliminer.
Apres elimination des doublons, il ne reste donc qu'un seul enregistrement pour chaque valeur distincte du champ mc.
Mais, je souhaite pour chacun de ces enregistrement, que :
le champ compteur enregistre le nombre total d'enregistrement que j'avais par valeur de mc
le champ ponderation enregistre la somme des ponderations par valeur de mc.

Un exemple :
avant "nettoyage" :
id, mc, ponderation, compteur
1, m1, 8, 1
2, m1, 5, 1
3, m1, 4, 1
4, m2, 3, 1
5, m2, 5, 1
6, m2, 5, 1
7, m2, 5, 1
8, m3, 1, 1
9, m3, 7, 1

apres "nettoyage" :
id, mc, ponderation, compteur
10, m1, 17, 3
11, m2, 18, 4
12, m3, 8, 2

Est-il possible de réaliser cela en 1 opération sans passer par une table temporaire ?

Merci.

Hors ligne

#2 11/01/2011 17:10:23

Marc Cousin
Membre

Re : Gestion de doublons

Oui, on pourrait. Mais pourquoi ne pas passer par une table temporaire, ce qui serait le plus simple et le plus propre ?

Non testé (je n'ai pas le temps de monter un environnement de test, désolé)

BEGIN;
CREATE temp TABLE tmp1 AS (SELECT mc,sum(ponderation) as ponderation,sum(compteur) as compteur FROM ma_table GROUP BY mc);
TRUNCATE ma_table;
INSERT INTO ma_table (mc,ponderation,compteur) SELECT mc,ponderation,compteur FROM tmp1;
DROP TABLE tmp1;
COMMIT;


Marc.

Hors ligne

Pied de page des forums