Problème avec Select count(*)
Posted in 2000
Topics: SQL Development & Query Writing, Platform-Specific Issues
Translated from English by DrWatson — View original
J'utilise Informix OnLine sur HP-UX et je rencontre des problèmes avec un select. La requête suivante : select count(*) from table_x where column_a=12345 group by column_b renvoie 11 lignes avec le résultat suivant : (count(*)) 204 172 202 203 203 202 242 202 204 201 196 Ce que je souhaite, c'est une sous-requête qui renvoie le nombre de lignes pour lesquelles le compte est supérieur à 200. Le résultat final serait donc ici 9. Le comptage individuel des lignes regroupées par column_b ne m'intéresse pas — je veux uniquement obtenir, au final, le nombre de groupes de column_b dont le compte est > 200. Je ne sais pas si cela est clair. Toute aide sera reçue avec reconnaissance.
Vous pourriez faire votre select INTO TEMP, puis effectuer un autre select sur la table temporaire là où le compte est > 200 : select count(*) c from table_x where column_a=12345 group by column_b into temp hold1; select count(*) from hold1 where c > 200; "darkemperor_uk" <johnsimpson46@johnsimpson46.fsnet.co.uk> a écrit dans le message news:8gb81m$1i6$1@news8.svr.pol.co.uk... > J'utilise Informix OnLine sur HP-UX et je rencontre des problèmes avec un select. > La requête suivante : > select count(*) > from table_x > where > column_a=12345 > group by column_b > renvoie 11 lignes avec le résultat suivant : > (count(*)) > 204 > 172 > 202 > 203 > 203 > 202 > 242 > 202 > 204 > 201 > 196 > Ce que je veux, c'est une sous-requête qui renvoie le nombre de lignes pour lesquelles le compte > est supérieur à 200. Le résultat final serait donc ici 9. > Le décompte individuel des lignes groupées par column_b ne m'intéresse pas — > seulement un résultat final indiquant le nombre de groupes de column_b > 200. > Je ne sais pas si cela est clair. > Toute aide serait grandement appréciée. > > > > > >
darkemperor_uk a écrit : > > J'utilise Informix OnLine sur HP-UX et je rencontre des problèmes avec un select. > La requête suivante : > select count(*) > from table_x > where > column_a=12345 > group by column_b > renvoie 11 lignes avec le résultat suivant : > (count(*)) > 204 > 172 > 202 > 203 > 203 > 202 > 242 > 202 > 204 > 201 > 196 > Ce que je voudrais, c'est une sous-requête qui renvoie le nombre de lignes dont le compte > est supérieur à 200. Le résultat final serait donc ici 9. > Je ne m'intéresse pas au compte individuel des lignes regroupées par column_b — > seulement au résultat final indiquant le nombre de groupes de column_b > 200. > Je ne sais pas si cela est clair. > Toute aide serait grandement appréciée. Tout d'abord, Informix ne vous permet pas de faire un GROUP BY sur une colonne qui ne figure PAS dans la liste des colonnes SELECTionnées, donc la requête que vous indiquez devrait en réalité renvoyer une erreur ! Cela mis à part, la correction est simple : il suffit de sélectionner column_b et d'ajouter une clause HAVING : SELECT column_b, count(*) FROM table_x WHERE column_a = 12345 GROUP BY column_b HAVING count(*) > 200 ORDER BY column_b; Art S. Kagel