Как найти наиболее частое значение в данном столбце таблицы SQL?
Например, для этой таблицы он должен возвращать two
, поскольку это наиболее частое значение:
one
two
two
three
Как найти наиболее частое значение в данном столбце таблицы SQL?
Например, для этой таблицы он должен возвращать two
, поскольку это наиболее частое значение:
one
two
two
three
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.
Поскольку в этом нет поддержки команд предела.
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
Если у вас есть столбец идентификаторов, и вы хотите найти наиболее повторяющуюся категорию из другого столбца для каждого идентификатора, то вы можете использовать запрос ниже,
Таблица:
Запрос:
ВЫБЕРИТЕ ID, КАТЕГОРИЮ, СЧЕТ (*) КАК ЧАСТОТА ИЗ ГРУППЫ ТАБЛИЦЫ ПО 1,2 КВАЛИФИКАЦИИ ROW_NUMBER() ПЕРЕВЕРНУТЬСЯ (РАЗДЕЛЕНИЕ ПО ИДЕНТИФИКАЦИИ ПО ЧАСТИ FREQ DESC) = 1;
Результат:
Один из способов, который мне нравится использовать:
выберите COUNT() как VAR1 из Table_Name
группа по
заказ по VAR1 desc
предел 1