Database/SQL Server

SQL Server - Where절과 Having절의 차이 Difference between where and having in SQL Server

청렴결백한 만능 재주꾼 2020. 12. 12. 06:55
반응형

둘 다 조건을 주는 절인데 시작점이 다르다.

Where은 조건을 주어 필터링을 하고

Having은 나온 결과를 필터링한다.

 

성능면에서 where가 좋다. 그러니 가능하면 having의 사용을 피하는게 좋다.
From a performance standpoint, HAVING is slower than WHERE and should be avoided when possible.

 

SELECT Product, SUM(SaleAmount) AS TotalSales
FROM Sales
WHERE Product in ('iPhone', 'Speakers')
GROUP BY Product


SELECT Product, SUM(SaleAmount) AS TotalSales
FROM Sales
GROUP BY Product
HAVING Product in ('iPhone', 'Speakers')

같은 결과가 나오는 두가지의 쿼리이다.

첫 번째 where절이 들어간 쿼리는  데이터를 테이블에서 뽑아올 때 부터 걸러서 들어온다.

두 번째 having절이 들어간 쿼리는 모든 데이터들을 다 계산하고 그룹한 다음에 필터링한다.

 

순서로만 봐도 이해가 될 수 있다.

 

where과 having 은 select 쿼리에서 같이 쓰일 수 있다. where로 걸러진 테이블의 데이터를 aggregate한 다음 group 을 having절이 필터하면 된다.

WHERE and HAVING can be used together in a SELECT query. In this case WHERE clause is applied first to filter individual rows. The rows are then grouped and aggregate calculations are performed, and then the HAVING clause filter the groups.

 

예시) Where 과 Having 동시에 쓴 쿼리

SELECT Count(Name) Number, City from person
WHERE Salary > 3000
GROUP BY City
HAVING City = 'London'
반응형