web-dev-qa-db-fra.com

Trouver la valeur la plus fréquente dans la colonne SQL

Comment trouver la valeur la plus fréquente dans une colonne donnée d'une table SQL?

Par exemple, pour cette table, elle devrait renvoyer two puisqu'il s'agit de la valeur la plus fréquente:

one
two
two
three
102
Jake
SELECT       `column`,
             COUNT(`column`) AS `value_occurrence` 
    FROM     `my_table`
    GROUP BY `column`
    ORDER BY `value_occurrence` DESC
    LIMIT    1;

Remplacez column et my_table. Augmentez 1 si vous souhaitez afficher les valeurs N les plus courantes de la colonne.

143
Mihai Stancu

Essayez quelque chose comme:

SELECT       `column`
    FROM     `your_table`
    GROUP BY `column`
    ORDER BY COUNT(*) DESC
    LIMIT    1;
34
Mat

Considérons le nom de la table comme tblperson et le nom de la colonne comme city. Je souhaite récupérer la ville la plus répétée de la colonne city:

 select city,count(*) as nor from tblperson
        group by city
          having count(*) =(select max(nor) from 
            (select city,count(*) as nor from tblperson group by city) tblperson)

Ici nor est un nom d'alias.

15
naveen

La requête ci-dessous semble fonctionner correctement pour moi dans la base de données SQL Server:

select column, COUNT(column) AS MOST_FREQUENT
from TABLE_NAME
GROUP BY column
ORDER BY COUNT(column) DESC

Résultat:

column          MOST_FREQUENT
item1           highest count
item2           second highest 
item3           third higest
..
..
6
Swadhikar C

Pour une utilisation avec SQL Server.

Comme il n'y a pas de support de commande limite dans cela.

Vous pouvez utiliser la commande top 1 pour rechercher la valeur maximale dans la colonne concernée dans ce cas (valeur).

SELECT top1 
    `value`,
    COUNT(`value`) AS `value_occurrence` 
FROM     
    `my_table`
GROUP BY 
    `value`
ORDER BY 
    `value_occurrence` DESC;
3
Muneeb Hassan

En supposant que Table est 'SalesLT.Customer' et que la colonne que vous essayez de comprendre est 'CompanyName' et que AggCompanyName est un alias.

Select CompanyName, Count(CompanyName) as AggCompanyName from SalesLT.Customer
group by CompanyName
Order By Count(CompanyName) Desc;
1
Muzammel Mukul

Si vous avez une colonne d'ID et que vous voulez trouver la catégorie la plus répétitive à partir d'une autre colonne pour chaque ID, vous pouvez utiliser la requête ci-dessous,

Table:

 enter image description here 

Question:

SELECT ID, CATEGORY, COUNT (*) AS FREQ A PARTIR DE LA TABLE GROUPE PAR 1,2 QUALIFY ROW_NUMBER () OVER (PARTITION PAR ID ORDER BY FREQ DESC) = 1;

Résultat:

 enter image description here 

0
Mayur Mane

Si vous ne pouvez pas utiliser LIMIT ou LIMIT n'est pas une option pour votre outil de requête. Vous pouvez utiliser "ROWNUM" à la place, mais vous aurez besoin d'une sous-requête:

SELECT FIELD_1, ALIAS1
FROM(SELECT FIELD_1, COUNT(FIELD_1) ALIAS1
    FROM TABLENAME
    GROUP BY FIELD_1
    ORDER BY COUNT(FIELD_1) DESC)
WHERE ROWNUM = 1
0
Roadkill