다음 SQL 의 실행 결과로 옳은 것은?[계약]계약번호설계사월보험료1한… | [SQLD] SQL 개발자 기출유형 모의고사 10회 상세 페이지
1[SQLD] SQL 개발자 기출유형 모의고사 10회
다음 SQL 의 실행 결과로 옳은 것은?[계약]
| 계약번호 | 설계사 | 월보험료 |
|---|---|---|
| 1 | 한결 | 60 |
| 2 | 한결 | 40 |
| 3 | 한결 | 100 |
| 4 | 서윤 | 70 |
| 5 | 서윤 | 80 |
| 6 | 지호 | 30 |
| 7 | 지호 | 150 |
| 8 | 태오 | 50 |
| 9 | 태오 | 120 |
| 10 | 서윤 | 45 |
SELECT 설계사, SUM(월보험료) AS 합계, COUNT(*) AS 건수 FROM 계약 WHERE 월보험료 >= 50 GROUP BY 설계사 HAVING COUNT(*) >= 2 ORDER BY 합계 DESC;
1
| 설계사 | 합계 | 건수 |
|---|---|---|
| 서윤 | 150 | 2 |
| 한결 | 160 | 2 |
| 태오 | 170 | 2 |
2
| 설계사 | 합계 | 건수 |
|---|---|---|
| 태오 | 170 | 2 |
| 한결 | 160 | 3 |
| 서윤 | 150 | 3 |
3
| 설계사 | 합계 | 건수 |
|---|---|---|
| 태오 | 170 | 2 |
| 한결 | 160 | 2 |
| 서윤 | 150 | 2 |
4
| 설계사 | 합계 | 건수 |
|---|---|---|
| 태오 | 170 | 2 |
| 한결 | 160 | 2 |
| 서윤 | 150 | 2 |
| 지호 | 150 | 1 |
해설
WHERE 가 그룹화보다 먼저 실행되어 50 미만인 계약 2·6·10번이 빠진 뒤 집계되므로 태오 170·한결 160·서윤 150(각 2건)이 남는다.
지호는 남은 행이 1건이라 HAVING 에서 제외되고, ORDER BY 는 SELECT 다음에 처리되어 별칭 합계로 내림차순 정렬된다.
- 지호 행이 남은 표는 HAVING 조건을 적용하지 않은 결과다.
- 건수가 3인 표는 WHERE 이전 행으로 COUNT 를 센 결과다.
- 서윤부터 나온 표는 정렬 방향이 오름차순으로 뒤집혔다.
오류나 개정된 내용이 보이면 알려주세요