SQL 강좌 28.SQL HAVING Clause

The SQL HAVING Clause

Having절은 WHERE키워드가 집계함수(aggreate functions)에 사용될 수 없기 때문에 추가됨.

HAVING Syntax

SELECT column_name(s)
FROM table_name
WHERE condition
GROUP BY column_name(s)
HAVING condition
ORDER BY column_name(s);

SQL HAVING Examples

다음 SQL 구문은 5명 이상의 고객을 가진 국적만 고객의 총 합을 표시한다.

SELECT COUNT(CustomerID), Country
FROM Customers
GROUP BY Country
HAVING COUNT(CustomerID) > 5;

내림차순으로 정렬

SELECT COUNT(CustomerID), Country
FROM Customers
GROUP BY Country
HAVING COUNT(CustomerID) > 5
ORDER BY COUNT(CustomerID) DESC;

More HAVING Examples

1) 직원의 성씨, 주문량(NumberOfOrders)정보를 가져오되
2) INNER JOIN을 이용하여 Employees테이블의 직원ID와 Orders 테이블의 직원ID가 매치되는 값에서
3) 직원의 성씨로 그룹화하며
4) 주문량이 10이상인 정보

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;

1) 직원의 성씨, 주문량(NumberOfOrders)정보를 가져오되
2) INNER JOIN을 이용하여 Employees테이블의 직원ID와 Orders 테이블의 직원ID가 매치되는 값에서
3) 직원의 성씨로 그룹화하며
4) 직원의 성씨가 Davolio 또는 Fuller이며 5) 주문량이 25이상인 정보

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;

Comments