본문 바로가기
프로그래밍/SQL, Hive, SAS 관련 정보

[SQL 기초] ROWNUM(혹은 LIMIT)

by 물박사의 저장공간 2025. 1. 18.

2025.02.24 - [프로그래밍/SQL, Hive, SAS 관련 정보] - [SQL] Table of Contents


행수를 제한하는 명령어입니다. 테이블을 정렬시킨 후 최대값만 뽑거나 최소값만 뽑는다거나 하는 식으로 사용해볼 수 있을 겁니다. Oracle에서는 ROWNUM을 where절에 사용하는 방식으로 MySQL이나 PostgreSQL은 Limit로 바로 개수를 입력해주는 방식으로 사용합니다. 

 

Oracle)

SELECT * 
FROM EMPLOYEES
WHERE ROWNUM <= 5;
-- 결과: 상위 5개의 행만 반환

 

MySQL/PostgreSQL

SELECT * 
FROM EMPLOYEES
LIMIT 5;
-- 결과: 상위 5개의 행만 반환

 

 

그런데, ROWNUM과 LIMIT의 순서 때문에 적용할 때 sub-query의 적용여부 등이 달라질 수는 있습니다. 

https://www.hackerrank.com/challenges/weather-observation-station-5/problem?isFullScreen=true

 

Weather Observation Station 5 | HackerRank

Write a query to print the shortest and longest length city name along with the length of the city names.

www.hackerrank.com

 

Oracle : ROWNUM을 where절에 넣어주는 방식이고 where절은 from다음에 나오는 것이 정렬전에 작동. 따라서 Sub-query를 써주어야 합니다. 

select * from 
(
    SELECT CITY, length(CITY)
    from station
    order by length(CITY), CITY
) where ROWNUM<=1;


select * from 
(
    SELECT CITY, length(CITY)
    from station
    order by length(CITY) desc, CITY
) where ROWNUM<=1;

 

 

MySQL : 뽑아낸 테이블에 마지막으로 LIMIT만 걸어주면 되어 마지막에 LIMIT만 붙이면 됩니다. 

SELECT CITY, LENGTH(CITY)
FROM STATION
ORDER BY LENGTH(CITY) ASC, CITY ASC
LIMIT 1;

SELECT CITY, LENGTH(CITY)
FROM STATION
ORDER BY LENGTH(CITY) DESC, CITY DESC
LIMIT 1;

 

'프로그래밍 > SQL, Hive, SAS 관련 정보' 카테고리의 다른 글

[SQL 기초] Greatest/Least  (0) 2025.01.18
[SQL 기초] SUBSTR함수  (0) 2025.01.18
[SQL 기초] Length함수  (0) 2025.01.18
[SQL 기초] Pivot  (1) 2025.01.18
[SQL 기초] Union/Union all  (0) 2025.01.09