학습용 기출·복원자료 분류 확인SQLD · 2023년 49회 SQL 기본 및 활용 · 16번
TBL에서 ID별 행 수가 정확히 2개인 ID를 구하고, ID 999의 정렬키만 0으로 바꿨을 때 결과 순서는?
TBL
ID
100
100
200
200
200
999
999
DBMS: Oracle
SELECT ID FROM TBL
GROUP BY ID
HAVING COUNT(*) = 2
ORDER BY CASE WHEN ID = 999 THEN 0 ELSE ID END;
1
999, 100
정답 근거100과 999는 각각 두 행이어서 HAVING을 통과하고 200은 세 행이라 제외된다. CASE 정렬키는 999가 0, 100이 100이므로 오름차순 결과는 999 다음 100이다. 따라서 1번 보기 ‘999, 100’의 적용 여부를 문제 조건과 대조해야 한다.
2
100, 999
오답 이유HAVING 대상은 맞지만 CASE가 999의 정렬키를 0으로 만들기 때문에 순서를 반대로 썼다. 따라서 2번 보기 ‘100, 999’의 적용 여부를 문제 조건과 대조해야 한다.
3
100, 200, 999
오답 이유ID 200은 세 행이므로 `COUNT(*)=2` 조건을 통과하지 못한다. 따라서 3번 보기 ‘100, 200, 999’의 적용 여부를 문제 조건과 대조해야 한다.
4
999, 200, 100
오답 이유999의 위치는 맞지만 200을 포함한 점이 HAVING 조건과 어긋난다. 따라서 4번 보기 ‘999, 200, 100’의 적용 여부를 문제 조건과 대조해야 한다.
ANSWER & EXPLANATION
정답 1번
핵심 판단은 1번 ‘999, 100’입니다. 100과 999는 각각 두 행이어서 HAVING을 통과하고 200은 세 행이라 제외된다. CASE 정렬키는 999가 0, 100이 100이므로 오름차순 결과는 999 다음 100이다.