如何在 SQL 表的给定列中找到最常见的值?
例如,对于这个表,它应该返回two
,因为它是最常见的值:
one
two
two
three
SELECT
<column_name>,
COUNT(<column_name>) AS `value_occurrence`
FROM
<my_table>
GROUP BY
<column_name>
ORDER BY
`value_occurrence` DESC
LIMIT 1;
替换<column_name>
和<my_table>
。1
如果要查看N
列的最常见值,请增加。
尝试类似:
SELECT `column`
FROM `your_table`
GROUP BY `column`
ORDER BY COUNT(*) DESC
LIMIT 1;
让我们考虑表名 astblperson
和列名 as 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)
这nor
是一个别名。
下面的查询在 SQL Server 数据库中似乎对我有用:
select column, COUNT(column) AS MOST_FREQUENT
from TABLE_NAME
GROUP BY column
ORDER BY COUNT(column) DESC
结果:
column MOST_FREQUENT
item1 highest count
item2 second highest
item3 third higest
..
..
用于 SQL Server。
因为没有限制命令支持。
在这种情况下,哟可以使用 top 1 命令找到特定列中出现的最大值(值)
SELECT top1
`value`,
COUNT(`value`) AS `value_occurrence`
FROM
`my_table`
GROUP BY
`value`
ORDER BY
`value_occurrence` DESC;
假设 Table 是 ' SalesLT.Customer
' 并且您要找出的 Column 是 ' CompanyName
' 并且AggCompanyName
是别名。
Select CompanyName, Count(CompanyName) as AggCompanyName from SalesLT.Customer
group by CompanyName
Order By Count(CompanyName) Desc;
如果您不能使用 LIMIT 或 LIMIT 不是您的查询工具的选项。您可以改用“ROWNUM”,但需要一个子查询:
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
如果您有一个 ID 列,并且您想从另一个列中为每个 ID 查找最重复的类别,那么您可以使用以下查询,
桌子:
询问:
SELECT ID, CATEGORY, COUNT(*) AS FREQ
FROM TABLE
GROUP BY 1,2
QUALIFY ROW_NUMBER() OVER(PARTITION BY ID ORDER BY FREQ DESC) = 1;
结果:
我喜欢使用的一种方法是:
选择,数数()作为来自 Table_Name 的 VAR1
通过...分组
按 VAR1 desc 排序
限制 1