что мне делать, если я хочу выбрать и другие поля из my_table? Другими словами, другое значение;
grep
7
что, если более одного значения появляется одинаковое количество раз (максимальное количество)? В таком случае, если три тоже появятся дважды? LIMIT 1 покажет только одну запись
mustafa1993
1
@ mustafa1993SELECT * FROM my_table GROUP BY value ORDER BY count(*) DESC;
Ахмед Сайед
почему не работает, когда я добавляю WHERE 'value_occurrence' = 1?
swisswiss
1
@swisswiss вы должны использовать HAVINGвместо WHEREв этом случае.
Я не знал, что вы можете использовать его COUNT(*)прямо в ORDER BY. Я знал, что существует несколько ограничений относительно GROUP BY/ HAVINGи агрегированных столбцов, и всегда предполагал, что это не сработает.
Михай Станку
21
Рассмотрим имя таблицы как tblpersonи имя столбца как city. Я хочу получить наиболее повторяющийся город из столбца города:
select city,count(*)as nor from tblperson
groupby city
having count(*)=(select max(nor)from(select city,count(*)as nor from tblperson groupby city) tblperson)
Вам также необходимо переместить функцию COUNT в раздел ORDER BY, чтобы избежать следующей ошибки: в списке выбора может быть указано только одно выражение, если подзапрос не вводится с EXISTS
Саба Джамалиан
1
Предположим, что таблица - это ' SalesLT.Customer', а столбец, который вы пытаетесь вычислить, ' CompanyName' и AggCompanyNameявляется псевдонимом.
Select CompanyName, Count(CompanyName)as AggCompanyName from SalesLT.Customer
groupby CompanyName
OrderBy Count(CompanyName)Desc;
Если вы не можете использовать LIMIT, или LIMIT не подходит для вашего инструмента запросов. Вместо этого вы можете использовать ROWNUM, но вам понадобится подзапрос:
@Prabhu в MySQL LIMIT 1вместо этого вы используете ; синтаксис показан в принятом ответе.
ToolmakerSteve
0
Если у вас есть столбец идентификатора, и вы хотите найти наиболее повторяющуюся категорию из другого столбца для каждого идентификатора, вы можете использовать запрос ниже,
Ответы:
Заменить
column
иmy_table
. Увеличьте,1
если хотите увидетьN
наиболее распространенные значения столбца.источник
SELECT * FROM my_table GROUP BY value ORDER BY count(*) DESC;
WHERE 'value_occurrence' = 1
?HAVING
вместоWHERE
в этом случае.Попробуйте что-нибудь вроде:
источник
COUNT(*)
прямо вORDER BY
. Я знал, что существует несколько ограничений относительноGROUP BY
/HAVING
и агрегированных столбцов, и всегда предполагал, что это не сработает.Рассмотрим имя таблицы как
tblperson
и имя столбца какcity
. Я хочу получить наиболее повторяющийся город из столбца города:Вот
nor
псевдоним.источник
Ниже запрос, похоже, хорошо работает для меня в базе данных SQL Server:
Результат:
источник
Для использования с SQL Server.
Поскольку в этом нет поддержки команды limit.
Вы можете использовать команду top 1, чтобы найти максимальное значение, встречающееся в конкретном столбце в этом случае (значение)
источник
Предположим, что таблица - это '
SalesLT.Customer
', а столбец, который вы пытаетесь вычислить, 'CompanyName
' иAggCompanyName
является псевдонимом.источник
Если вы не можете использовать LIMIT, или LIMIT не подходит для вашего инструмента запросов. Вместо этого вы можете использовать ROWNUM, но вам понадобится подзапрос:
источник
ROWNUM
LIMIT 1
вместо этого вы используете ; синтаксис показан в принятом ответе.Если у вас есть столбец идентификатора, и вы хотите найти наиболее повторяющуюся категорию из другого столбца для каждого идентификатора, вы можете использовать запрос ниже,
Стол:
Запрос:
Результат:
источник
Один из способов, который мне нравится использовать:
Выбрать , COUNT () как VAR1 из Table_Name
группа по
заказать по VAR1 по убыванию
предел 1
источник