- 상위 n개 레코드 : 동물 보호소에 가장 먼저 들어온 동물의 이름을 조회하는 SQL 문을 작성해주세요.
상위 n개 레코드를 출력하는 sql문을 작성하는 문제가 프로그래머스에 있었다.
mySQL 같은 경우에는 LIMIT으로 간단히 해결되지만 오라클의 경우에는 ROWNUM을 사용해야 한다. 서브 쿼리를 사용할 때 WITH AS 구문을 사용하면 가독성을 높일 수 있다.
WITH절 : 오라클9 이후 버전부터 사용이 가능하며 이름이 부여된 서브 쿼리이다. VIEW와 쓰임새가 비슷한데 차이점이 있다면 VIEW는 한번 만들어놓으면 DROP 할 때까지 없어지지 않지만 WITH절의 경우 한번 실행할 쿼리내에 정의되어 있을 경우, 그 쿼리 문안에서만 실행된다. WITH 절을 이용하여 미리 이름을 부여해서 Query Block을 만들 수 있다. 자주 실행되는 경우 한 번만 Parsing 되고 Plan 계획이 수립되므로 쿼리의 성능 향상에 도움이 된다.
현재 예시 문제에는 서브 쿼리를 사용하는게 1개지만 실무를 하면서 통계 산출 시 반복 & 중첩해서 쿼리를 작성하는 경우가 매우 많다. 즉, 재사용이 잦은 경우에 잊지 말고 사용하도록 하자 !
WITH BASE AS (
SELECT
NAME
FROM
ANIMAL_INS
ORDER BY DATETIME ASC
)
SELECT NAME FROM BASE WHERE ROWNUM = 1;
참조
'RDB > Oracle' 카테고리의 다른 글
[오라클]timestamp를 활용한 데이터 복구 (0) | 2019.06.10 |
---|---|
[오라클] JAVA와 ORACLE의 연동 (0) | 2019.01.30 |
[오라클] 불완전복구,log파일복구 (0) | 2019.01.30 |
[오라클] 완전복구, 불완전복구-시간기반,취소기반 (0) | 2019.01.29 |
[오라클]INDEX REBUILD, 지연제약조건, 사용자/PROFILE/PRIVILEGE/ROLE 관리, SQLLDR (0) | 2019.01.28 |