Добавление ограничения при использовании group by - PullRequest
0 голосов
/ 04 февраля 2020

Я хочу перечислить, сколько раз указатель c perNr появляется в таблице, но меня интересуют только те, где count(perNr) > 2

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

select TREATMENT_TYPE, perNr, count(perNr)
from Treatments
group by perNr, TREATMENT_TYPE;

Я попытался добавить ограничение следующим образом (и это дает ошибку)

select TREATMENT_TYPE, perNr, count(perNr)
from Treatments
group by perNr, TREATMENT_TYPE
where count(perNr) > 1;

Ответы [ 4 ]

2 голосов
/ 04 февраля 2020

Вы можете использовать предложение having.

select TREATMENT_TYPE, perNr, count(perNr)
from Treatments
group by perNr, TREATMENT_TYPE
having count(perNr) > 1;
1 голос
/ 04 февраля 2020

======================

Вы должны использовать условие Having для вашего требования.

SELECT TREATMENT_TYPE, PERNR, COUNT(PERNR) PERNR_COUNT FROM TREATMENTS GROUP BY PERNR, TREATMENT_TYPE WHERE COUNT(1) > 1

См. Ссылку ниже -

[https://www.w3schools.com/sql/sql_having.asp] [1] https://www.w3schools.com/sql/sql_having.asp

1 голос
/ 04 февраля 2020

use Наличие вместо , где

Предложение HAVING было добавлено к SQL, поскольку WHERE ключевое слово не может использоваться с агрегатными функциями.

select TREATMENT_TYPE, perNr, count(perNr)
from Treatments
group by perNr, TREATMENT_TYPE
HAVING count(perNr) > 1;
1 голос
/ 04 февраля 2020
Предложение

WHERE будет работать с неагрегированными данными, а предложение HAVING будет работать с агрегированными данными, такими как GROUP BY или функцией агрегирования (MIN/MAX, SUM).

Итак, Вы хотите HAVING предложение, потому что вы агрегируете данные на основе perNr, TREATMENT_TYPE:

SELECT perNr, TREATMENT_TYPE, COUNT(perNr)
FROM Treatments
GROUP BY perNr, TREATMENT_TYPE
HAVING COUNT(perNr) > 2;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...