GROUP BY란?
오라클에서 제공하는 GROUP BY는 특정 칼럼을 기준으로 집계를 내는 데 사용된다.
예를 들어 PLAYER 테이블에서 포지션 별로 묶어 집계를 낸다고 가정해 보자.
SELECT POSITION FROM PLAYER
GROUP BY POSITION;
POSITION 칼럼을 기준으로 그룹을 만들었다.
그 결과 GK, DF, FW, MF 4가지 포지션이 있는 걸 알 수 있다.
SELECT POSITION, AVG(HEIGHT) FROM PLAYER
GROUP BY POSITION;
집계함수를 이용하여 포지션별 평균키도 조회할 수 있다.
SELECT TEAM_ID, POSITION FROM PLAYER
GROUP BY TEAM_ID, POSITION
ORDER BY TEAM_ID;
GROUP BY 여러개 칼럼으로도 집계가능하다.
-- ORA-00979 ERROR
SELECT * FROM PLAYER
GROUP BY POSITION;
POSITION 칼럼으로 그룹을 했는데 전체 칼럼(*)을 조회하면 에러가 발생한다.
잘 생각해 보면 당연한 결과인걸 금방 알 수 있을 것이다.
마찬가지로 GROUP BY절에 지정된 칼럼이 아닌 HEIGHT나 WEIGHT 칼럼도 조회할 수 없다.
HAVING이란?
HAVING은 GROUP BY로 집계한 결과에 조건을 추가하는 것이다.
그럼 WHERE이랑 다를 게 없지 않냐고 생각이 들 수 있다.
하지만, 집계함수의 경우 WHERE에서 사용할 수 없다는 점!!
-- 몸무게가 80이상인 선수들의 평균키가 185이상인 포지션 조회
SELECT POSITION, AVG(HEIGHT) FROM PLAYER
WHERE WEIGHT >= 80
GROUP BY POSITION
HAVING AVG(HEIGHT) >= 185;
'DB > 오라클(Oracle)' 카테고리의 다른 글
[Oracle] 오라클 JOIN 사용법 (2) | 2023.12.04 |
---|---|
[Oracle] 오라클 서브쿼리(SubQuery) 사용법 (4) | 2023.12.03 |
[Oracle] 오라클 CASE WHEN 사용법 (0) | 2023.12.01 |
[Oracle] 오라클 정렬 ORDER BY 사용법 (0) | 2023.11.30 |
[Oracle] 오라클 집계함수(AVG, MAX, MIN, SUM, COUNT) (0) | 2023.11.29 |