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
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.
Essayez quelque chose comme:
SELECT `column`
FROM `your_table`
GROUP BY `column`
ORDER BY COUNT(*) DESC
LIMIT 1;
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.
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
..
..
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;
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;
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:
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:
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