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