<aside> 💡
GROUP BY 이후 SELECT 절의 모든 컬럼은
“그룹 수만큼의 행”을 가져야 한다
</aside>
SQL의 논리적 실행 순서
FROM → WHERE → GROUP BY → SELECT → ORDER BY
| 단계 | 역할 | 단위 |
|---|---|---|
| FROM | 테이블 생성 | 행 |
| WHERE | 행 필터 | 행 |
| GROUP BY | 그룹 생성 | 그룹 |
| SELECT | 컬럼 선택 | 결과 |
| ORDER BY | 정렬 | 결과 |
SELECT deptno, AVG(salary)
FROM emp
WHERE salary >= 3000
GROUP BY deptno
ORDER BY deptno;
FROM 테이블 퍼올리고
where 행 거르고
GROUP BY deptno
남아 있는 행들을
deptno 값 기준으로 분리
내부적으로는 이렇게 됨:
[deptno=10] → 행 묶음
[deptno=20] → 행 묶음
👉 여기서부터 행 단위 세계 종료
👉 그룹 단위 세계 시작
그룹 10 → [행1, 행2, 행3]
그룹 20 → [행4, 행5]
SELECT deptno, AVG(sal)
여기서 그룹별 집계가 시작됨
그룹마다 하나의 행으로 정해짐