<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) 
여기서 그룹별 집계가 시작됨
그룹마다 하나의 행으로 정해짐