Skip to content

26. HAVING


1. HAVING Clause

  • WHERE 키워드는 집계 함수에 사용될 수 없기 때문에 HAVING 절이 SQL에 추가되었다.


2. Syntax

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


Demo Database

  • 다음은 Northwind 샘플 데이터베이스의 Customers 테이블이다.


001


3. HAVING Examples

  • 다음은 고객이 5명 초과인 국가만 포함하는 각 국가의 고객 수를 나열한다.


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


  • 다음은 고객이 5명 초과인 국가만 포함하는 각 국가의 고객 수를 내림차순으로 나열한다.


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


Demo Database

  • 다음은 Northwind 샘플 데이터베이스의 Orders 테이블이다.


002


  • 다음은 Northwind 샘플 데이터베이스의 Employees 테이블이다.


003


4. More HAVING Examples

  • 다음은 10개 이상의 주문을 등록한 직원을 나열한다.


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


  • 다음은 직원 "Davolio" 또는 "Fuller"25개 이상의 주문을 등록했는지 여부를 나열한다.


SELECT Employyes.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;

References