Selectionner les lignes qui ont la valeus fréquante

- - Dernière réponse : Reivax962
Messages postés
3485
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
14 octobre 2019
- 17 juin 2019 à 09:29
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
Afficher la suite 

2 réponses

Messages postés
3485
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
14 octobre 2019
915
0
Merci
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)
Commenter la réponse de Reivax962
0
Merci
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é."
Reivax962
Messages postés
3485
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
14 octobre 2019
915 -
Bonjour,

L'erreur indique que tu as utilisé une colonne t.Number_pregnant qui n'existe pas. Vérifie bien ta requête.

Xavier
Commenter la réponse de hamma.manel1