Bonjour,
je cherche une requête, sans sous requête, me permettant de trouver le mode dans une mesure de tendance centrale.
ex : valeurs vr -> A,A,B,B,B,C,D,E,E,E,E,E
me retourne E qui est la valeur la plus présente.
Actuellement je fait (de manière simplifié):
Le contexte d'utilisation actuel (un peu plus complexe) étant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 SELECT vr FROM (SELECT vr FROM matable GROUP BY vr ORDER BY COUNT(*) DESC) WHERE ROWNUM=1;
Si la table t2 est importante les temps de réponses peuvent être dégradés
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 SELECT t1.* ,(SELECT vr FROM (SELECT vr,code FROM t2 GROUP BY vr,code ORDER BY COUNT(*) DESC) WHERE ROWNUM=1 AND code=t1.code) AS vr FROM t1;
et une requête de la forme :
ne retourne pas les bonnes valeurs.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 SELECT t1.* ,(SELECT vr FROM (SELECT vr FROM t2 WHERE code=t1.code GROUP BY vr ORDER BY COUNT(*) DESC) WHERE ROWNUM=1) AS vr FROM t1;
J'ai déjà remarqué que 2 niveaux de sous-requêtes posaient problème lors de l'utilisation de valeur de la requête principale dans la sous-sous-requête.
J'ai cherché un peu dans les requêtes analytiques mais je n'ai pas trouvé comment formuler cela correctement.
Donc si vous avez des idées ou des remarques, je suis preneur.
Cordialement
P.S.: Oracle 10g ou plus
Partager