Як я можу знайти найчастіше значення в заданому стовпці таблиці 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 * FROM my_table GROUP BY value ORDER BY count(*) DESC;
WHERE 'value_occurrence' = 1
?
HAVING
замість WHERE
цього випадку.
Спробуйте щось на кшталт:
SELECT `column`
FROM `your_table`
GROUP BY `column`
ORDER BY COUNT(*) DESC
LIMIT 1;
COUNT(*)
прямо в ORDER BY
. Я знав, що існує кілька обмежень щодо GROUP BY
/ HAVING
та сукупності стовпців, і я завжди вважав, що це не спрацює.
Розглянемо назву таблиці як 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, щоб знайти максимальне значення в цьому стовпчику в конкретному стовпці (value)
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
ROWNUM
LIMIT 1
натомість; синтаксис відображається у прийнятій відповіді.
Якщо у вас стовпчик ідентифікаторів і ви хочете знайти найбільш повторювані категорії з іншого стовпця для кожного ідентифікатора, то ви можете використовувати нижче запит,
Таблиця:
Запит:
SELECT ID, CATEGORY, COUNT(*) AS FREQ
FROM TABLE
GROUP BY 1,2
QUALIFY ROW_NUMBER() OVER(PARTITION BY ID ORDER BY FREQ DESC) = 1;
Результат: