在SQL列中查找最常见的值

时间:2012-09-02 11:29:46

标签: mysql sql

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

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

one
two
two
three

9 个答案:

答案 0 :(得分:153)

SELECT       `column`,
             COUNT(`column`) AS `value_occurrence` 
    FROM     `my_table`
    GROUP BY `column`
    ORDER BY `value_occurrence` DESC
    LIMIT    1;

替换columnmy_table。如果您想查看该列的1最常见值,请增加N

答案 1 :(得分:36)

尝试类似:

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

答案 2 :(得分:17)

我们将表名称视为tblperson,将列名称视为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是别名。

答案 3 :(得分:6)

以下查询在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
..
..

答案 4 :(得分:3)

用于SQL Server。

由于没有限制命令支持。

Yo可以使用top 1命令查找特定列中的最大值(在这种情况下)(值)

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

答案 5 :(得分:1)

假设表格是' SalesLT.Customer'你试图找出的专栏是' CompanyName'而AggCompanyName是别名。

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

答案 6 :(得分: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

答案 7 :(得分:0)

如果您有一个ID列,并且想从另一个列中为每个ID查找最重复的类别,则可以使用以下查询,

表格:

enter image description here

查询:

选择ID,类别,COUNT(*)作为频率 从表 1,2组 合格ROW_NUMBER()OVER(按ID排序或按FREQ DESC排序)= 1;

结果:

enter image description here

答案 8 :(得分:-1)

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

从表名称中

选择 ,COUNT( )作为VAR1

分组

按VAR1 desc排序

限制1