Предложение HAVINGопределять категории, используемые для удаления определенных групп из вывода, наподобие тому, как это делает предложение WHEREдля индивидуальных строк.
Пример 1. Вывести наименьшую оценку, меньшую 5.
SELECTSNUM, UDATE, MIN(OCENKA)
FROM USP
GROUP BYSNUM,UDATE
HAVING MIN(OCENKA) < 5;
Результат запроса:
SNUM UDATE
-----------------------------------------
3412 12/06/1999 4
3413 10/06/1999 4
3414 11/06/1999 3
После UDATE не может быть вызвано предложением HAVING,потому что оно может иметь больше чем значение на группу вывода, следовательно, для изображение такой ситуации, предложениеHAVINGдолжно ссылаться только на агрегатные функции и поля, выбранные в GROUP BY.
Аргументы в предложении HAVINGподчиняется тем же самым правилам, что и в предложении SELECT, состоящем из команд, использующих GROUP BY: они должны иметь одно значение на групп вывода.
Пример 2. Вывести наименьшую оценку, полученную 10/06/1999.
SELECTSNUM,MIN(OCENKA)
FROM USP
WHERE UDATE= 10/06/1999
GROUP BYSNUM;
Результат запроса:
SNUM
-------------
3412 5
3413 4
Пример 3. вывести наименьшую оценку для студентов с номерами 3412 и 3413.
SELECTSNUM,MIN(OCENKA)
FROM USP
GROUP BYSNUM
HAVINGSNUM IN (3412, 3413);
Результат запроса:
SNUM
----------------
3412 4
3413 4
Замечание: нельзя использовать агрегатную функцию от агрегатной функции.
Сортировка результатов запроса.