이제 데이터 공부 안하는 블로그

[SQL] GROUP BY 를 사용할 때 규칙 본문

SQL

[SQL] GROUP BY 를 사용할 때 규칙

공사노비 2021. 9. 24. 09:16

GROUP BY 를 사용할 때 규칙

 

GROUP BY를 사용할 때는, SELECT 절에

  1. GROUP BY 뒤에서 사용한 컬럼들
  2. COUNT, MAX 등과 같은 집계 함수만 

사용이 가능하다. 즉, GROUP BY 뒤에 쓰지 않은 컬럼 이름을 SELECT 뒤에 쓸 수 없다.

 

왜냐하면, 일단 GROUP BY를 해서 그루핑을 해놓으면 출력했을 때 하나 하나의 row는 이미 그룹화된 놈이기 때문에 사실 한 줄 안에는 여러 row가 포함되어 있는 것이기 때문이다. 그래서 GROUP BY 하지 않은 컬럼을 SELECT 절 뒤에 써서 조회하려고 하면 그룹화되지 않은 여러 row 중 무엇을 가져와야할지 알 수가 없기 떄문이다. 

 

예를 들어 GROUP BY 뒤에 age를 쓰지 않았는데 SELECT 절 뒤에 age를 쓰면 에러가 난다.

하지만!!

SELECT절 뒤에 age를 바로 쓰는 건 안 되지만, AVG(age)처럼 집계 함수의 인자로 사용하는 건 괜찮다. AVG를 사용하면 row 전체를 보여주는 게 아니라 평균값만 보여주기 때문이다.