Інколи треба обрати групи, враховуючи властивості груп як таких. Тоді конструкція “select... group by” доповнюється реченням HAVING, яке є умовою на включення груп у підсумкове відношення.
Приклад 5.16. Нехай необхідно обчислити сумарні значення тривалості фільмів лише тих продюсерів, які випустили бодай один фільм до 1930 року. Відповідний запит:
Рис.5.22. Приклад групування з використанням речення HAVING
Як бачимо, текст запиту прикладу 5.15 доповнено реченням HAVING MIN(year) < 1930.
При виконанні запиту рис.5.22 з підсумкового відношення будуть видалені усі групи, у яких значення year більше або дорівнює 1930. Очевидно, це можна зробити лише після групування усього запиту! WHERE запобігає обробці зайвих записів, а HAVING ні.
Як і в реченні SELECT, у реченні HAVING можна використовувати 2 види атрибутів:
- Групуючі атрибути з речення GROUP BY;
- Будь-які інші атрибути відношень, згаданих у реченні FROM, але вони мають бути агреговані.