다음 ㉠의 결과 행 수, ㉡의 결과 행 수, ㉡에서 부서가 개발인 행의… | [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 가 적용되지 않는다고 본 모순된 계산이다.

오류나 개정된 내용이 보이면 알려주세요

이어서 풀어보기

[SQLD] SQL 개발자 기출유형 모의고사 3회 50문항 이어서 보기문제·정답·해설을 한 페이지에서 이어서 볼 수 있어요SQLD SQL 개발자 실전 모의고사 암기장 전체 보기