SQL
[SQL] GROUP BY 를 사용할 때 규칙
공사노비
2021. 9. 24. 09:16
GROUP BY 를 사용할 때 규칙
GROUP BY를 사용할 때는, SELECT 절에
- GROUP BY 뒤에서 사용한 컬럼들
- COUNT, MAX 등과 같은 집계 함수만
사용이 가능하다. 즉, GROUP BY 뒤에 쓰지 않은 컬럼 이름을 SELECT 뒤에 쓸 수 없다.
왜냐하면, 일단 GROUP BY를 해서 그루핑을 해놓으면 출력했을 때 하나 하나의 row는 이미 그룹화된 놈이기 때문에 사실 한 줄 안에는 여러 row가 포함되어 있는 것이기 때문이다. 그래서 GROUP BY 하지 않은 컬럼을 SELECT 절 뒤에 써서 조회하려고 하면 그룹화되지 않은 여러 row 중 무엇을 가져와야할지 알 수가 없기 떄문이다.
예를 들어 GROUP BY 뒤에 age를 쓰지 않았는데 SELECT 절 뒤에 age를 쓰면 에러가 난다.
하지만!!
SELECT절 뒤에 age를 바로 쓰는 건 안 되지만, AVG(age)처럼 집계 함수의 인자로 사용하는 건 괜찮다. AVG를 사용하면 row 전체를 보여주는 게 아니라 평균값만 보여주기 때문이다.