일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- useCallback
- task queue
- 타입 단언
- Redux Toolkit
- Headless 컴포넌트
- Microtask Queue
- type assertion
- Render Queue
- useLayoutEffect
- CS
- prettier-plugin-tailwindcss
- 클라이언트 상태 관리 라이브러리
- 프로세스
- Compound Component
- 주니어개발자
- TypeScript
- 암묵적 타입 변환
- AJIT
- docker
- 좋은 PR
- JavaScript
- react
- zustand
- helm-chart
- Sparkplug
- 명시적 타입 변환
- Recoil
- linux 배포판
- jotai
- Custom Hook
Archives
- Today
- Total
구리
210609_오라클 순번 매기기 (ROWNUM) 본문
목차
오라클 순번매기기 ROWNUM
select rownum, pseq, name, price2, image
from product
where bestyn='y';
ROWNUM이라는 시스템 함수를 사용하면 위와 같이 라인별 순번을 가져올 수 있습니다. 하지만 위와 같이 아무런 정렬이 되지 않은 데이터에 순번을 매긴다면 그 순번은 상당히 의미 없는 숫자가 되어 버릴 것입니다.
정렬된 데이터에 순번매기기
위의 예제와 같이 순번을 매기는 시스템 함수는 ROWNUM이고 정렬은 ORDER BY를 사용하시면 되는데 ROWNUM와 ORDER BY를 같이 사용할 경우 매겨놓은 순번이 섞여버리는 현상이 발생합니다.
select rownum, pseq, name, price2, image
from product
where bestyn='y'
order by indate desc;
위와같이 ROWNUM함수는 ORDER BY함수를 같이 사용하면 순번이 뒤죽박죽이 됩니다. 그 이유는 먼저 순번을 매기고 난 뒤 ORDER BY 정렬을 하기 때문입니다. 이 문제를 해결하기 위해서는 현재 순번매기기 -> 정렬 순으로 진행하는 방식을 정렬 -> 순번매기기로 순으로 진행하면 해결이 가능합니다.
서브쿼리에서 먼저 정렬(ORDER BY) 후 순번 매기기(ROWNUM)
select rownum, pseq, name, price2, image
from
(
select *
from product
where bestyn='y'
order by indate desc
);
위와 같이 서브쿼리에서 먼저 정렬을 하고 순번을 매기는 방법으로 정렬된 데이터에 순번을 매길 수 있습니다.
'DataBase' 카테고리의 다른 글
[h2] h2 데이터 베이스 생성 (0) | 2021.08.30 |
---|---|
[ORACLE] 오라클 테이블 export 하는 법 (DDL문 추출) (0) | 2021.07.19 |
TIL_210413_SQL활용(숫자 함수, 날짜 함수, 문자처리 함수, 형변환 함수...) (0) | 2021.04.13 |
TIL_210412_SQL활용(집합연산, 집계함수, 중첩질의, VIEW, SEQUENCE) (0) | 2021.04.12 |
TIL_210408_레코드 검색, 재명명, LIKE 연산자 (0) | 2021.04.11 |