Oracle(12c 이상) 기준으로 도서 테이블에서 대출수 상위 3권의… | [SQLD] SQL 개발자 기출유형 모의고사 5회 상세 페이지
1[SQLD] SQL 개발자 기출유형 모의고사 5회
Oracle(12c 이상) 기준으로 도서 테이블에서 대출수 상위 3권의 제목을 구하려 한다. 실행 시 오류가 발생하는 것은?㉠
SELECT 제목 FROM (SELECT 제목, ROW_NUMBER() OVER (ORDER BY 대출수 DESC) AS RN FROM 도서) WHERE RN <= 3;㉡
SELECT 제목, ROW_NUMBER() OVER (ORDER BY 대출수 DESC) AS RN FROM 도서 WHERE RN <= 3;㉢
SELECT 제목 FROM 도서 ORDER BY 대출수 DESC FETCH FIRST 3 ROWS ONLY;㉣
SELECT 제목 FROM (SELECT 제목 FROM 도서 ORDER BY 대출수 DESC) WHERE ROWNUM <= 3;
1
㉣
2
㉠
3
㉢
4
㉡
해설
㉡은 같은 SELECT 절에서 만든 별칭 RN 을 WHERE 절에서 쓰는데, WHERE 는 SELECT 보다 먼저 처리되고 윈도우 함수는 WHERE 절에 쓸 수 없으므로 오류가 난다.
ROW_NUMBER 로 Top N 을 구하려면 ㉠처럼 인라인 뷰에서 순번을 만든 뒤 바깥 쿼리에서 걸러야 한다.
- ㉠은 인라인 뷰에서 만든 RN 을 바깥 WHERE 에서 비교하므로 정상 실행된다.
- ㉢의 FETCH FIRST 3 ROWS ONLY 는 Oracle 12c 부터 지원하는 Top N 구문이다.
- ㉣은 정렬된 인라인 뷰에 ROWNUM 조건을 걸어 상위 3행을 바르게 구한다.
오류나 개정된 내용이 보이면 알려주세요
이어서 풀어보기
[SQLD] SQL 개발자 기출유형 모의고사 5회 50문항 이어서 보기문제·정답·해설을 한 페이지에서 이어서 볼 수 있어요비슷한 기출
- 다음sql결과에알맞는쿼리을작성하시오. selectname,scorefrom성적(1)by(2)(3) 1.order 2.score 3.desc2022년 정보처리기사실기 1회차
- sql문에서괄호안에알맞은답안을작성하시오. ('이름'이란컬럼에'이'로시작하는문자열을'내림차순'하는쿼리결과내용입니다.) select....from...where이름l2021년 정보처리기사실기 2회차
- 다음sql결과에알맞는답을작성하시오. [table] selectcount(col2) fromtable wherecol1in(2,3)orcol2in(3,5); 42022년 정보처리기사실기 2회차