Najnowsze tutoriale tworzenie stron internetowych
 

SQL Klauzula HAVING


Klauzula HAVING

Klauzula HAVING dodano do SQL, ponieważ słowo kluczowe WHERE nie może być używany z funkcji agregujących.

Składnia SQL HAVING

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;

Demo Database

W tym tutorialu użyjemy znaną bazę danych Northwind.

Poniżej znajduje się wybór z "Orders" tabeli:

OrderID Identyfikator klienta Dowód pracownika Data zamówienia ShipperID
10248 90 5 1996-07-04 3
10249 81 6 1996-07-05 1
10250 34 4 1996-07-08 2

A wybór z "Employees" tabeli:

Dowód pracownika Nazwisko Pierwsze imię Data urodzenia Zdjęcie Uwagi
1 Davolio Nancy 1968-12-08 EmpID1.pic Education includes a BA....
2 Fuller Andrew 1952-02-19 EmpID2.pic Andrew received his BTS....
3 Leverling Janet 1963-08-30 EmpID3.pic Janet has a BS degree....

Przykład SQL HAVING

Teraz chcemy się dowiedzieć, czy którykolwiek z pracowników zarejestrował ponad 10 zamówień.

Używamy następującą instrukcję SQL:

Przykład

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;

Spróbuj sam "

Teraz chcemy się dowiedzieć, czy pracownicy "Davolio" lub "Fuller" zarejestrowano ponad 25 zamówień.

Dodajmy zwykłym WHERE do SQL:

Przykład

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;

Spróbuj sam "