다음 SQL의 실행 결과로 옳은 것은?[예약]예약번호편명등급운임상태R0… | [SQLD] SQL 개발자 기출유형 모의고사 4회 상세 페이지
1[SQLD] SQL 개발자 기출유형 모의고사 4회
다음 SQL의 실행 결과로 옳은 것은?[예약]
| 예약번호 | 편명 | 등급 | 운임 | 상태 |
|---|---|---|---|---|
| R01 | KE101 | Y | 200 | 확정 |
| R02 | KE101 | Y | 220 | 취소 |
| R03 | KE101 | C | 500 | 확정 |
| R04 | OZ202 | Y | 180 | 확정 |
| R05 | OZ202 | Y | 190 | 확정 |
| R06 | OZ202 | C | 450 | 취소 |
| R07 | KE303 | Y | 210 | 확정 |
| R08 | KE303 | Y | 210 | 취소 |
| R09 | KE303 | Y | 230 | 취소 |
SELECT 편명, COUNT(*) AS 건수, SUM(운임) AS 합계 FROM 예약 WHERE 상태 = '확정' GROUP BY 편명 HAVING COUNT(*) >= 2 ORDER BY 합계 DESC;
1
| 편명 | 건수 | 합계 |
|---|---|---|
| OZ202 | 2 | 370 |
| KE101 | 2 | 700 |
2
| 편명 | 건수 | 합계 |
|---|---|---|
| KE101 | 2 | 700 |
| OZ202 | 2 | 370 |
3
| 편명 | 건수 | 합계 |
|---|---|---|
| KE101 | 2 | 700 |
| OZ202 | 2 | 370 |
| KE303 | 1 | 210 |
4
| 편명 | 건수 | 합계 |
|---|---|---|
| KE101 | 3 | 920 |
| OZ202 | 3 | 820 |
| KE303 | 3 | 650 |
해설
논리적 처리 순서는 FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY이므로 취소 행이 먼저 걸러진 뒤 확정 예약만으로 편명별 건수를 센다.
확정이 1건뿐인 KE303 은 HAVING 에서 빠지고, 남은 두 행은 SELECT 에서 만든 별칭 합계로 내림차순 정렬된다.
- KE303 이 남은 표는 HAVING 건수를 취소 포함 전체 행으로 판정했다.
- OZ202 가 먼저 온 표는 정렬 방향을 오름차순으로 보았다.
- 건수가 3인 표는 WHERE 필터를 무시했다.
오류나 개정된 내용이 보이면 알려주세요