146

如何在 SQL 表的给定列中找到最常见的值?

例如,对于这个表,它应该返回two,因为它是最常见的值:

one
two
two
three
4

9 回答 9

225
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列的最常见值,请增加。

于 2012-09-02T11:34:06.463 回答
59

尝试类似:

SELECT       `column`
    FROM     `your_table`
    GROUP BY `column`
    ORDER BY COUNT(*) DESC
    LIMIT    1;
于 2012-09-02T11:33:47.120 回答
29

让我们考虑表名 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是一个别名。

于 2013-08-03T03:49:06.147 回答
14

下面的查询在 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
..
..
于 2016-01-29T09:48:58.093 回答
3

用于 SQL Server。

因为没有限制命令支持。

在这种情况下,哟可以使用 top 1 命令找到特定列中出现的最大值(值)

SELECT top1 
    `value`,
    COUNT(`value`) AS `value_occurrence` 
FROM     
    `my_table`
GROUP BY 
    `value`
ORDER BY 
    `value_occurrence` DESC;
于 2012-12-26T23:26:24.297 回答
2

假设 Table 是 ' SalesLT.Customer' 并且您要找出的 Column 是 ' CompanyName' 并且AggCompanyName是别名。

Select CompanyName, Count(CompanyName) as AggCompanyName from SalesLT.Customer
group by CompanyName
Order By Count(CompanyName) Desc;
于 2015-12-28T07:28:05.690 回答
0

如果您不能使用 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
于 2015-11-24T16:59:39.277 回答
0

如果您有一个 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;

结果:

查询结果

于 2019-04-01T14:30:24.357 回答
-1

我喜欢使用的一种方法是:

选择,数数()作为来自 Table_Name 的 VAR1

通过...分组

按 VAR1 desc 排序

限制 1

于 2019-05-06T10:14:12.793 回答