2014/04/15

그룹 바이(GROUP BY) // 그룹 함수, WHERE, HAVING, 조건, 오라클(Oracle), SQL

1. GROUP BY 와 WHERE


  • WHERE 절과 GROUP BY 절을 함께 사용하면, WHERE 조건을 만족하는 것(row)만 GROUP BY 절로 넘어가게 됨. 즉, GROUP BY 의 선행조건이 됨.
  • 문법적으로도 WHERE 절이 GROUP BY 절보다 먼저(=위에) 나와야 함.


2. GROUP BY 와 HAVING


  • HAVING 절은 그룹 함수(또는 Aggregate Function)의 결과값을 거르는 것. 즉, GROUP BY 의 결과를 가지고 HAVING 절의 조건에 맞는지 따지게 됨.
  • 문법적으로 HAVING 절에 조건으로 나오는 녀석은 SELECT 절에서 부르거나, GROUP BY 절에서 사용하는 녀석이어야 함.
  • HAVING 절과 GROUP BY 절은 순서를 섞어서 써도 결과가 같음.


3. WHERE 와 HAVING


GROUP BY 절이 들어간 쿼리의 전체적인 효율을 따진다면

WHERE 절로는 입력값(=각 row의 값)을 걸러내는 식으로 처리 하는 게 좋고,

HAVING 절에 거는 조건은 각 row의 값이 아닌, 그룹 합수의 결과값을 넣는 게 좋다.





참고:
Mastering Oracle SQL


댓글 없음:

댓글 쓰기