더북(TheBook)

7.2 HAVING 절

 

 

계속 이어서 얘기를 해 보죠. 만약 승하차 인원 합계가 15000~16000명 사이인 역만 조회하려면 어떻게 해야 할까요? 이전 쿼리는 인원 합계별 내림차순 정렬을 했으므로 쿼리 실행 결과에서 세로 스크롤바를 내리면서 찾아보면 됩니다만 이는 귀찮은 일이죠. 혹시 뭔가 조건을 거는 작업이므로 WHERE 절을 떠올렸나요? 다시 이야기하지만 집계 함수는 SELECT 절에서만 사용할 수 있습니다.

이럴 때 사용하는 것이 HAVING 절입니다. HAVING 절은 GROUP BY 절과 함께 사용되며 집계 함수 결과 값으로 조건을 걸 때 사용합니다. 쿼리를 보시죠.

쿼리 7-6 HAVING 절

SELECT station_name
      ,boarding_time
      ,gubun       
      ,MIN(passenger_number) min_value
      ,MAX(passenger_number) max_value
      ,SUM(passenger_number) sum_value
  FROM subway_statistics
 GROUP BY station_name, boarding_time, gubun
 HAVING SUM(passenger_number) BETWEEN 15000 AND 16000
 ORDER BY 6 DESC;

 

▲ 그림 7-6 쿼리 7-6을 실행한 결과

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.