SQL-параметр HAVING

Матеріал представлений на сторінці взятий з ресурсу http://www.w3schools.com/sql/


Параметр HAVING визначає умови вибірки даних агрегатних функцій SQL, які визначені спільним признаком GROUP BY.
SQL-параметр HAVING додається в SQL-вираз, тому що ключове слово WHERE не може застосовуватись з агрегатними функціями.

Синтаксис SQL-функції GROUP BY

SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name
HAVING aggregate_function(column_name) operator value;

Розглянемо слідуючу Базу Даних.
Таблиця "Orders"(Замовлення).

OrderIDCustomerIDEmployeeIDOrderDateShipperID
10265721996-07-251
102668731996-07-263
102672541996-07-291


Таблиця "Employees"(співробітники).

EmployeeIDLastNameFirstNameNotes
1DavolioNancyEducation includes....
2FullerAndrewAndrew received..
3LeverlingJanetJanet has...


Приклад використання SQL-параметру HAVING

Слідуючий SQL-вираз знаходить співробітників, що виконали більше ніж 10 замовлень.
Для цього використаємо слідуючий SQL-вираз:

SELECT Employees.LastName, COUNT(Orders.OrderID) AS NumberOfOrders FROM (Orders
INNER JOIN Employees
ON Orders.EmployeeID=Employees.EmployeeID)
GROUP BY LastName
HAVING COUNT(Orders.OrderID) > 10;

Перевір себе тут


Розглянемо приклад, коли потрібно перевірити чи співробітники "Davolio" чи "Fuller" виконали більше ніж 25 замовлень.
Ми доповнюємо SQL-вираз оператором WHERE .

SELECT Employees.LastName, COUNT(Orders.OrderID) AS NumberOfOrders FROM Orders
INNER JOIN Employees
ON Orders.EmployeeID=Employees.EmployeeID
WHERE LastName='Davolio' OR LastName='Fuller'
GROUP BY LastName
HAVING COUNT(Orders.OrderID) > 25;

Перевір себе тут