Предложение HAVING
2.1. Предложение HAVING
При помощи HAVING отражаются все предварительно сгруппированные посредством GROUP BY блоки данных, удовлетворяющие заданным в HAVING условиям. Это дополнительная возможность «профильтровать» выходной набор.
Условия в HAVING отличаются от условий в WHERE:
- HAVING исключает из результирующего набора данных группы с результатами агрегированных значений;
- WHERE исключает из расчета агрегатных значений по группировке записи, не удовлетворяющие условию;
- в условии поиска WHERE нельзя задавать агрегатные функции.
Пример 51. Определить фирмы, у которых общее количество сделок превысило три.
SELECT Klient.Firma, Соunt(Sdelka. Kolichestvo)
AS Kolichestvo Sdelok
Рекомендуемые материалы
FROM Klient INNER JOIN Sdelka
ON Klient.KodKlientа=Sdelka.KodKlientа
GROUP BY Klient.Firma
HAVING Count(Sdelka. Kolichestvo)>3
Пример 52. Вывести список товаров, проданных на сумму более 10000 руб.
SELECT Tovar.Nazvanie,
Sum(Tovar.Cena*Sdelka. Kolichestvo)
AS Stoimosti
FROM Tovar INNER JOIN Sdelka
ON Tovar.KodTovarа=Sdelka.KodTovarа
GRCUP BY Tovar.Nazvanie
HAVING Sum(Tovar.Cena*Sdelka. Kolichestvo)>10000
Пример 53.Вывести список товаров, проданных на сумму более 10000 без указания суммы.
SELECT Tovar.Nazvanie
FROM Tovar INNER JOIN Sdelka
ON Tovar.KodTovarа=Sdelka.KodTovarа
GROUP BY Tovar.Nazvanie
Бесплатная лекция: "Оглавление" также доступна.
HAVING Sum(Tovar.Cena*Sdelka. Kolichestvo)>10000
Пример 54. Отобразить предметы, у которых > 70 часов (отбор произвести в каждой групп предметов)
SELECT Name, MAX(hours)
FROM Subject
GROUP BY Name
HAVING MAX (Hours)>70