[프로그래머스] 상위 n개 레코드

1. 상위 n개 레코드

A. 문제

위 프로그래머스 사이트에 접속하여 문제를 확인해주세요.

B. 내 답안


-- Oracle

-- SELECT NAME
-- FROM ANIMAL_INS
-- WHERE ROWNUM <= 10
-- ORDER BY DATETIME ASC;

SELECT NAME
FROM 
(
 SELECT NAME
 FROM ANIMAL_INS
 ORDER BY DATETIME ASC)
WHERE ROWNUM <= 1;

a. 추가적인 설명

상위 n개 데이터만 추출하는 방법으로 LIMIT을 알고 있었다. 그런데 자꾸 에러가 발생했다. 알고보니 LIMIT은 MySQL에서 사용하는 문법이었다. 오라클에서는 ROWNUMLIMIT 대신 사용한다고 한다.

그렇다고 아래와 같이 코딩하면 에러가 발생한다.


SELECT NAME
FROM ANIMAL_INS
WHERE ROWNUM <= 10
ORDER BY DATETIME ASC;

왜냐하면, 쿼리가 실행되는 순서가 있기 때문이다. 쿼리는 FROM - WHERE - GROUP BY - SELECT - ORDER BY 순으로 실행된다.

참고문헌

[1] SELECT. 코딩테스트 연습 - 여러 기준으로 정렬하기 | 프로그래머스 (programmers.co.kr). Programmers. (accessed Sep 15, 2021)

[2] higee, [oracle] 상위 n개 데이터만 뽑고 싶은 경우 : 네이버 블로그 (naver.com). Naver Blog (accessed Sep 15, 2021)

이 글이 도움이 되었나요?

신고하기
0분 전
작성된 댓글이 없습니다. 첫 댓글을 달아보세요!
    댓글을 작성하려면 로그인이 필요합니다.