Como posso encontrar o valor mais frequente em uma determinada coluna em uma tabela SQL?
Por exemplo, para esta tabela, ele deve retornar, twopois é o valor mais frequente:
one
two
two
three
Como posso encontrar o valor mais frequente em uma determinada coluna em uma tabela SQL?
Por exemplo, para esta tabela, ele deve retornar, twopois é o valor mais frequente:
one
two
two
three
Respostas:
SELECT `column`,
COUNT(`column`) AS `value_occurrence`
FROM `my_table`
GROUP BY `column`
ORDER BY `value_occurrence` DESC
LIMIT 1;
Substitua columne my_table. Aumente 1se você deseja ver os Nvalores mais comuns da coluna.
SELECT * FROM my_table GROUP BY value ORDER BY count(*) DESC;
WHERE 'value_occurrence' = 1?
HAVINGvez de WHEREneste caso.
Tente algo como:
SELECT `column`
FROM `your_table`
GROUP BY `column`
ORDER BY COUNT(*) DESC
LIMIT 1;
COUNT(*)diretamente no ORDER BY. Eu sabia que havia algumas restrições em relação a GROUP BY/ HAVINGe colunas agregadas e sempre achei que isso não funcionaria.
Vamos considerar o nome da tabela como tblpersone o nome da coluna como city. Quero recuperar a cidade mais repetida da coluna da cidade:
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)
Aqui norestá um nome alternativo.
A consulta abaixo parece funcionar bem para mim no banco de dados do SQL Server:
select column, COUNT(column) AS MOST_FREQUENT
from TABLE_NAME
GROUP BY column
ORDER BY COUNT(column) DESC
Resultado:
column MOST_FREQUENT
item1 highest count
item2 second highest
item3 third higest
..
..
Para uso com o SQL Server.
Como não há suporte ao comando limit nisso.
Você pode usar o comando top 1 para encontrar o valor máximo de ocorrência na coluna específica nesse caso (valor)
SELECT top1
`value`,
COUNT(`value`) AS `value_occurrence`
FROM
`my_table`
GROUP BY
`value`
ORDER BY
`value_occurrence` DESC;
Supondo que a tabela seja ' SalesLT.Customer' e a coluna que você está tentando descobrir seja ' CompanyName' e AggCompanyNameé um alias.
Select CompanyName, Count(CompanyName) as AggCompanyName from SalesLT.Customer
group by CompanyName
Order By Count(CompanyName) Desc;
Se você não pode usar LIMIT ou LIMIT, não é uma opção para sua ferramenta de consulta. Você pode usar "ROWNUM", mas precisará de uma subconsulta:
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
ROWNUM
LIMIT 1; sintaxe é mostrada na resposta aceita.
Se você possui uma coluna de ID e deseja encontrar a categoria mais repetitiva de outra coluna para cada ID, pode usar a consulta abaixo,
Tabela:

Inquerir:
SELECT ID, CATEGORY, COUNT(*) AS FREQ
FROM TABLE
GROUP BY 1,2
QUALIFY ROW_NUMBER() OVER(PARTITION BY ID ORDER BY FREQ DESC) = 1;
Resultado:
