GROUP BY с количеством> Certain_Number - PullRequest
0 голосов
/ 20 апреля 2020

Моя таблица:

City   |   Country
--------------------
City1  |   Country1
City2  |   Country1
City3  |   Country1
City4  |   Country1
City1  |   Country2
City2  |   Country2

Я хочу выбрать те страны, в которых менее 3 городов:

Count   |   Country
--------------------
2       |   Country2

Итак, мой запрос:

SELECT Country, COUNT(*) AS Count FROM Table GROUP BY Country WHERE Table.Count < 3

не работает.

Ответы [ 2 ]

2 голосов
/ 20 апреля 2020

Вы не можете использовать агрегатное выражение в предложении where (это предложение обрабатывается до фактического агрегирования). Вместо этого вы можете использовать предложение having:

SELECT country, COUNT(*) AS Count 
FROM Table 
GROUP BY country 
HAVING COUNT(*) < 3
0 голосов
/ 20 апреля 2020

Так как Count не является столбцом в вашей таблице, вы не можете определить как Table.Count , вместо этого вы можете дать псевдоним. WHERE условие применяет условия для столбца. HAVING условие применяет условие для агрегатной функции и может использоваться только после группировки по

SELECT Country, COUNT(*) AS Count FROM Table GROUP BY Country HAVING Count < 3
...