Selectionner les lignes qui ont la valeus fréquante
Bonjour,
j'ai besoin d'une requête sql qui sélectionne les ligne qui ont la valeur fréquente pour chaque attribut un exemple pour mieux comprendre
ID nombre machin
1 16 pouet
2 32 plop
3 16 blah!
4 54 fichtre
5 32 diantre
6 8 amphigourique
7 16 seize
8 63 klaxon
9 12 thiéfaine
10 78 progressif
11 12 plop
la requete doit m'afficher
ID nombre machin
1 16 pouet
3 16 blah!
7 16 seize
2 32 plop
11 12 plop
j'ai besoin d'une requête sql qui sélectionne les ligne qui ont la valeur fréquente pour chaque attribut un exemple pour mieux comprendre
ID nombre machin
1 16 pouet
2 32 plop
3 16 blah!
4 54 fichtre
5 32 diantre
6 8 amphigourique
7 16 seize
8 63 klaxon
9 12 thiéfaine
10 78 progressif
11 12 plop
la requete doit m'afficher
ID nombre machin
1 16 pouet
3 16 blah!
7 16 seize
2 32 plop
11 12 plop
2 réponses
-
Bonjour,
Cela n'a rien de trivial (si j'ai bien compris).
J'essaierais quelque chose de ce goût-là :SELECT t.ID, t.Nombre, t.Machin FROM ma_table t INNER JOIN ( SELECT Nombre, COUNT(*) as nc FROM ma_table GROUP BY Nombre ) n ON n.Nombre = t.Nombre INNER JOIN ( SELECT Machin, COUNT(*) as mc FROM ma_table GROUP BY Machin ) m ON m.Machin = t.Machin WHERE nc > 1 OR mc > 1 ORDER BY CASE WHEN nc > mc THEN nc ELSE mc END DESC, CASE WHEN nc > mc THEN t.Nombre ELSE -1 END, CASE WHEN nc > mc THEN 'zz' ELSE t.Machin END, t.Id
Par contre c'est du bricolage, si tu as 200 champs ça va être super galère...
Xavier
(Edit : j'ai modifié le ORDER BY) -
merci de m'avoir répondu j'ai appliqué ta requette mais un message d'exeption qui s'affiche " Une exception non gérée du type 'System.Data.SqlClient.SqlException' s'est produite dans System.Data.dll.
Informations supplémentaires : L'identificateur en plusieurs parties "t.Number_pregnant" ne peut pas être lié."