반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 손에 잡히는 경제 요약
- 급등주 분석
- 이진우
- java
- 상한가 분석
- Programmers
- Python
- 코딩테스트
- 손에 잡히는 경제
- 경제
- 파이썬
- 이진우의 손에 잡히는 경제
- 테마주
- 자바
- 상한가
- 급등 이유
- boj
- 손경제 요약
- 프로그래머스
- 주식
- 백준
- 주식 상한가
- 알고리즘
- 손경제
- 급등주
- 코테
- 상한가 이유
- 경제뉴스 요약
- 경제뉴스
- 주식 분석
Archives
- Today
- Total
Completion over Perfection
[오라클][SQL] DB에서 특정 순번 (rownum) 이후의 값 추출하는 방법 본문
반응형
* 아래 내용은 오라클 DB를 기준으로 작성했습니다.
일반적으로 많이 사용하는 특정 rownum 이하의 값을 추출하는 것은 다들 아실 거다.
아래와 같이 쿼리를 짜면 특정 순번 (rownum) 이하의 값이 추출된다.
(아래의 예시 코드대로라면 10번째까지의 DB 행값들이 출력이 될 것이다)
select * from your_table
where rownum < 10;
근데 특정 순번 이후의 값만 출력을 하고 싶을 때가 있다.
그럴 경우, 아래와 같이 쓰면 출력이 안되고 아무 값도 나오지 않는다.
select * from your_table
where rownum > 10;
그 이유는 rownum의 경우, 쿼리가 전부 다 실행되고 결과값이 나온 이후에 넘버링이 되기 때문이라고 한다.
그래서 서브쿼리를 활용해야 한다.
10 이상의 rownum를 가지는 값들을 출력하려면 아래와 같이 짜면 된다.
select * from (
select t.*, rownum as rn from
your_table t
)
where rn > 10;
위의 쿼리는 Oracle 기준이고 다른 DB를 쓴다면 방법이 조금씩 다르다고 한다.
다른 DB들은 아래 예시들을 참고하자.
- MySQL
MySQL에서는 ROW_NUMBER() 윈도우 함수를 사용 (MySQL 8.0 이상)
WITH numbered_rows AS (
SELECT t.*, ROW_NUMBER() OVER (ORDER BY some_column) AS rn
FROM your_table t
)
SELECT *
FROM numbered_rows
WHERE rn >= 5;
- PostgreSQL
PostgreSQL은 ROW_NUMBER()를 사용
WITH numbered_rows AS (
SELECT t.*, ROW_NUMBER() OVER (ORDER BY some_column) AS rn
FROM your_table t
)
SELECT *
FROM numbered_rows
WHERE rn >= 5;
- SQL Server
SQL Server도 ROW_NUMBER()를 사용
WITH numbered_rows AS (
SELECT t.*, ROW_NUMBER() OVER (ORDER BY some_column) AS rn
FROM your_table t
)
SELECT *
FROM numbered_rows
WHERE rn >= 5;
반응형
Comments