Найти наиболее частое значение в столбце SQL


Как я могу найти наиболее частое значение в данном столбце В таблице SQL?

например, для этой таблицы он должен вернуть two так как это самое частое значение:

one
two
two
three
7 84

7 ответов:

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

заменить column и my_table. Увеличить 1 Если вы хотите увидеть N наиболее распространенные значения столбца.

попробуйте что-то вроде:

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

рассмотрим имя таблицы 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 - это псевдоним.

ниже запрос, кажется, работает хорошо для меня в базе данных 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.

поскольку в этом нет поддержки команд limit.

Yo может использовать команду top 1, чтобы найти максимальное значение в конкретном столбце В этом случае (значение)

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

предполагая, что таблица 'SalesLT.Customer' и столбец, который вы пытаетесь выяснить, является '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