다음 SQL 의 실행 결과로 옳은 것은?강좌강좌코드강좌명K1SQL기초K… | [SQLD] SQL 개발자 기출유형 모의고사 2회 상세 페이지
1[SQLD] SQL 개발자 기출유형 모의고사 2회
다음 SQL 의 실행 결과로 옳은 것은?강좌
| 강좌코드 | 강좌명 |
|---|---|
| K1 | SQL기초 |
| K2 | 모델링 |
| K3 | 튜닝 |
| K4 | 파이썬 |
수강
| 학번 | 강좌코드 | 상태 |
|---|---|---|
| S1 | K1 | 승인 |
| S2 | K1 | 대기 |
| S3 | K1 | 승인 |
| S1 | K2 | 대기 |
| S4 | K3 | 승인 |
| S2 | K3 | 취소 |
SELECT C.강좌코드, COUNT(E.학번) AS 인원
FROM 강좌 C
LEFT OUTER JOIN 수강 E
ON C.강좌코드 = E.강좌코드
AND E.상태 = '승인'
GROUP BY C.강좌코드
ORDER BY C.강좌코드;1
| 강좌코드 | 인원 |
|---|---|
| K1 | 2 |
| K2 | 0 |
| K3 | 1 |
| K4 | 0 |
2
| 강좌코드 | 인원 |
|---|---|
| K1 | 3 |
| K2 | 1 |
| K3 | 2 |
| K4 | 0 |
3
| 강좌코드 | 인원 |
|---|---|
| K1 | 2 |
| K2 | 1 |
| K3 | 1 |
| K4 | 1 |
4
| 강좌코드 | 인원 |
|---|---|
| K1 | 2 |
| K3 | 1 |
해설
LEFT OUTER JOIN 에서 ON 절에 둔 상태 조건은 조인할 수강 행만 거를 뿐 왼쪽 강좌 행은 모두 남기므로 K2·K4 도 결과에 나타난다.
K2·K4 는 짝이 없어 수강 열이 NULL 이 되고, COUNT(E.학번)은 NULL 을 세지 않아 인원이 0이다.
- K1·K3 만 남은 표는 상태 조건을 WHERE 에 둔 결과이다.
- K2·K4 가 1인 표는 COUNT(*)로 NULL 행까지 센 결과이다.
- K1 이 3인 표는 승인 조건 없이 모든 수강을 센 결과이다.
오류나 개정된 내용이 보이면 알려주세요