MAX(COUNT(*)) - SQL/NoSQL - Programmation
Marsh Posté le 02-04-2007 à 14:35:43
J'hésite entre "tu veux le plus grand count pour chacun des champs" ou tu veux l'element présent le plus de fois dans ta table.
On va dire le deuxième vu que le 1er voudrait rien dire . Si ta table n'est pas trop grosse tu peux ruser avec fetch/optimize mais c'est super pas optimisé:
Code :
|
Sinon t'es bon pour passer par une sous requete
Marsh Posté le 02-04-2007 à 14:36:30
+1
t'as deux niveaux de regroupement, ce qui impose deux niveaux de requête :
select max(nb)
from
(
select count(*)
from matable
group by mestrucs à compter
)
en une seule passe, mais moins sexy :
select top 1 count(*) nb
from matable
group by mes trucs à compter
order by nb desc
Marsh Posté le 03-04-2007 à 11:38:12
merci anapjari, j'avais pensé à ta requete mais je ne la trouve pas tres standard.
Je préfère utiliser celle de magicbuzz qui est la meme que celle que j'ai proposé ds mon poste
select max(tutu) from (select count(*) as tutu, champ from table group by champ
mais le problème est que je ne peux pas afficher le champ pour lequel j'ai compté le maximum.
Marsh Posté le 04-04-2007 à 16:52:46
select max(tutu) from (select count(*) as tutu, champ from table group by champ ceci fonctionne
select max(tutu), champ from (select count(*) as tutu, champ from table group by champ ceci ne fonctionne pas
Marsh Posté le 04-04-2007 à 17:00:30
et tu es ... surpris ???
T'as pas l'impression qu'il manque un bout à ta requête?
Mais de toute façon, etant donné que tu as déjà un aggregat sur champ dans ta sous requête, le max du count sera égal au count.
Marsh Posté le 05-05-2009 à 11:08:09
Pour récupérer l'élément (ou les éléments) qui a le plus grand "MAX de COUNT" je proposerais bien la solution suivante :
SELECT champ |
Avec une vue intermédiaire, ce serait certainement plus lisible et peut être également plus léger pour le SGBD
Marsh Posté le 02-04-2007 à 13:37:21
salut j'aimerais sélectionner un max count(*) en db2
select max(count(*)), champ from table group by champ ne fonctionne pas.
select max(tutu), champ from (select count(*) as tutu, champ from table group by champ
ne fonctionne pas non plus.
Mais fonctionne si je n'affiche pas le champ.
merci de votre aide