Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1508 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  MAX(COUNT(*))

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

MAX(COUNT(*))

n°1537289
polo021
Posté le 02-04-2007 à 13:37:21  profilanswer
 

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

mood
Publicité
Posté le 02-04-2007 à 13:37:21  profilanswer
 

n°1537301
did-54
Posté le 02-04-2007 à 14:05:38  profilanswer
 

faut faire une sous requete nan ?

n°1537321
anapajari
s/travail/glanding on hfr/gs;
Posté le 02-04-2007 à 14:35:43  profilanswer
 

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 :
  1. select tonchamp, count(*) from tatable group by tonchamp order by count(*) desc fetch first 1 rows only optimize for 1 rows


Sinon t'es bon pour passer par une sous requete


Message édité par anapajari le 02-04-2007 à 14:36:34
n°1537323
MagicBuzz
Posté le 02-04-2007 à 14:36:30  profilanswer
 

+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

n°1537720
polo021
Posté le 03-04-2007 à 11:38:12  profilanswer
 

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.

n°1537742
MagicBuzz
Posté le 03-04-2007 à 11:59:15  profilanswer
 

comment ça tu ne peux pas l'afficher ?

n°1538494
polo021
Posté le 04-04-2007 à 16:52:46  profilanswer
 

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

n°1538497
anapajari
s/travail/glanding on hfr/gs;
Posté le 04-04-2007 à 17:00:30  profilanswer
 

et tu es ... surpris ??? :o
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.

n°1881000
jibe555
Posté le 05-05-2009 à 11:08:09  profilanswer
 

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
FROM (
       SELECT count(*) as nbVal, champ  
       FROM table  
       GROUP BY champ
     )
 
WHERE nbVal =  
          (  
             SELECT max(tutu)  
             FROM (
                    SELECT count(*) as tutu, champ  
                    FROM table
                    GROUP BY champ
                  )
          )


 
Avec une vue intermédiaire, ce serait certainement plus lisible et peut être également plus léger pour le SGBD


Message édité par jibe555 le 05-05-2009 à 11:09:59

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  MAX(COUNT(*))

 

Sujets relatifs
Count et jointure[DB2-IBM] COUNT(DISTINCT) consommateur en ressource ?
MySQL : Faire un MAXProbleme d'association de requete Count et Select
ORDER BY count(*) pour deux bases de données ensembleORDER BY avec count
Multi countFormat fichiers MAX R2 & R3
[Résolu] Problème avec count et distinctRequete avec une clause count et somme
Plus de sujets relatifs à : MAX(COUNT(*))


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR