Подтвердить что ты не робот

SQL COUNT * GROUP BY больше, чем,

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

SELECT ItemMetaData.KEY, ItemMetaData.VALUE, count(*) 
FROM ItemMetaData 
GROUP BY ItemMetaData.KEY 
ORDER BY count(*) desc;

Но я также хочу отфильтровать этот результат, а это означает, что я хочу, только если count (*) больше 2500, поэтому будет показано только более 2500 случаев, но:

SELECT * 
FROM 
(
    SELECT ItemMetaData.KEY, ItemMetaData.VALUE, count(*) 
    FROM ItemMetaData 
    GROUP BY ItemMetaData.KEY 
    ORDER BY count(*) desc
) as result WHERE count(*)>2500;

К сожалению, этот запрос приводит к синтаксической ошибке. Можете ли вы помочь мне в достижении моего требования?

4b9b3361

Ответ 1

Предложение HAVING для агрегатов

SELECT ItemMetaData.KEY, ItemMetaData.VALUE, count(*) 
FROM ItemMetaData 
Group By ItemMetaData.KEY, ItemMetaData.VALUE
HAVING count(*) > 2500
ORDER BY count(*) desc;

Ответ 2

Вы должны использовать having с функциями группы вместо where. Например:.

select ..., count(*) from ... group by ... having count(*) > 2500;

Ответ 4

Вот объяснение: предложение WHERE вводит условие для отдельных строк; Предложение HAVING вводит условие об агрегации.

Используйте WHERE до GROUP BY и HAVING после GROUP BY. Это не обязательно, но полезно в большинстве случаев.

SELECT 
       ItemMetaData.KEY, ItemMetaData.VALUE, СOUNT(*) 
FROM  ItemMetaData 
GROUP BY
       ItemMetaData.KEY, ItemMetaData.VALUE
HAVING СOUNT(*) > 2500
ORDER BY СOUNT(*) DESC;