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 |