🍏 개발일기/으쌰으쌰 SQLD 자격증 준비

노랭이 70P 부터 시작 56번, 60번, 62번

보배 진 2026. 2. 19. 14:08

 

이 문제는 SQLD에서 자주 나오는 GROUP BY + ORDER BY 함정 문제라고 볼 수 있다

GROUP BY를 썼으면 ➡️ SELECT, ORDER BY, HAVING 에서 그룹 기준 컬럼 OR 집계함수만 사용 가능

 

GROUP BY가 되는 컬럼의 특징

같은 값끼리 묶을 수 있는 컬럼

그 컬럼 값이 그룹의 기준이 됨

 

정답 3번


 

문제 요구 사항을 보자

▪️승리건수 높은 순으로 3위까지 출력

▪️그런데 3위 승리건수가 같은 팀이 있다면 같이 출력

 

표를 보면 A, E, D, F 총 4건이 나와야 한다

 

보기를 보면

① TOP(3) ... ORDER BY 승리건수 DESC ❌ 무조건 3행만 잘라서 가져옴

② TOP(3)인데 ORDER BY 없음 ❌

③ WHERE ROWNUM <= 3 ORDER BY 승리건수 DESC ❌ 아무 3개나 뽑아서 정렬

④ TOP(3) WITH TIES ... ORDER BY 승리건수 DESC ✅ TOP 3까지 뽑되, 마지막 순위와 동점인 행은 추가로 더 출력

 

🍑 ROWNUM

Oracle에서 행 번호를 붙이는 가짜 컬럼

즉, 조회된 결과에 1, 2, 3, 4 번호 붙여줌


 

출연료가 8888 이상인 것들에 대해

영화명, 배우명, 출연료를 구하는 SQL

 

테이블(밑줄 친 게 PK)

▪️배우(배우번호, 배우명, 성별)

▪️영화(영화번호, 영화명, 제작년도)

▪️출연(배우번호, 영화번호, 출연료) ⬅️ 얘가 연결 테이블(교차테이블)

즉 관계는

출연.영화번호 = 영화.영화번호

출연.배우번호 = 배우.배우번호

교차 테이블(출연)이 가운데 → PK 두 개로 양쪽 테이블 조인 + 조건은 출연료 있는 테이블에

 

즉 정답은 4번