다음 ㉠의 결과 행 수, ㉡의 결과 행 수, ㉡에서 부서가 개발인 행의… | [SQLD] SQL 개발자 기출유형 모의고사 3회 상세 페이지
1[SQLD] SQL 개발자 기출유형 모의고사 3회
다음 ㉠의 결과 행 수, ㉡의 결과 행 수, ㉡에서 부서가 개발인 행의 합계 값을 순서대로 나열한 것은?[직원]
| 사번 | 부서 | 급여 |
|---|---|---|
| 1 | 영업 | 300 |
| 2 | 영업 | 200 |
| 3 | 개발 | 400 |
| 4 | 개발 | 350 |
| 5 | 개발 | 240 |
| 6 | (null) | 280 |
| 7 | 인사 | 330 |
㉠
SELECT 부서, SUM(급여) AS 합계 FROM 직원 WHERE 급여 >= 250 GROUP BY 부서;
㉡
SELECT 부서, SUM(급여) OVER (PARTITION BY 부서) AS 합계 FROM 직원 WHERE 급여 >= 250;
1
3, 5, 750
2
4, 5, 750
3
4, 7, 990
4
4, 5, 990
해설
WHERE 로 급여 200·240 두 행이 빠진 뒤 ㉠은 영업·개발·인사·NULL 의 4개 그룹, ㉡은 남은 5행을 그대로 돌려주고 개발 행 합계는 400+350=750이다.
윈도우 함수는 WHERE·GROUP BY 처리 뒤에 계산되며 행을 줄이지 않고, 부서가 NULL 인 행도 하나의 그룹·파티션이 된다.
- 3개 그룹은 부서가 NULL 인 행이 그룹에서 빠진다고 본 경우이다.
- 7행·990 은 윈도우 함수가 WHERE 보다 먼저 계산된다고 본 경우이다.
- 5행이면서 990 은 합계에만 WHERE 가 적용되지 않는다고 본 모순된 계산이다.
오류나 개정된 내용이 보이면 알려주세요