본문 바로가기
개발일지/SQL

oracle developer 기초2. 최상위 출력 방법 LIMIT, OFFSET FETCH, TOP + 활용 문제풀이

by 개발에정착하고싶다 2022. 9. 9.
320x100

이번 단원은 확실히 난이도가 향상된 느낌을 많이 받았다.

그도 그럴것이 하나의 툴만 사용하면 사실 익숙해져서 이건 아무것도 아니라고 느낄것인데

각 툴마다 최상위 출력 방법이 달라버리면, 익숙해지지 않은 입장에선 어렵다고 느껴지기 때문이다.

 

내게 가장 익숙한 툴이야 postgreSQL이고, 그걸로 최상위 출력한다 치면 LIMIT로 앳저녁에 끝냈겠지만

dbms의 툴은 postgreSQL말고도 여러가지 니깐..


# 기본 최상위 출력 방법

1. oracle developer

방법1
# 서브쿼리

문제1. 면적이 넓은 상위 4개의 도시를 골라보자

SELECT * FROM 
(SELECT * FROM tcity ORDER BY area DESC) 
WHERE rownum <=4;



이런식으로 출력을 해야한다.

방법2
OFFSET FETCH 사용이다.

예시1
면적이 넓은 상위 4개의 도시를 고른다는 의미

SELECT * FROM tcity ORDER BY area DESC OFFSET 0 ROWS FETCH NEXT 4 ROWS ONLY;



** 아주 중요 예시2
상위 2개를 건너뛰고 나서부터 3개를 출력해준다는 의미

SELECT * FROM tcity ORDER BY area DESC OFFSET 2 ROWS FETCH NEXT 3 ROWS ONLY;

2. SQL server

SELECT TOP 을 이용해서 TOP 순위 몇개인지 지정 하면 된다.

예시

SELECT TOP 4 * FROM tcity ORDER BY area DESC;

3. postgreSQL

마지막에 LIMIT으로 몇개를 지정할지 정해주면 사실상 정렬기준에 따라서
최하 n개 혹은 최상 n개를 지정이 가능하다.


# 문제

문제1. 직원을 월급 순으로 정렬한 후 12위에서 16위까지 출력하라

이건 확실히 난이도가 있어서 기존의 코드를 참고했다.

SELECT * FROM tstaff ORDER BY salary DESC
OFFSET 11 ROWS FETCH NEXT 5 ROWS ON
300x250