DB
[ORACLE] 구분 값과 정렬 컬럼이 다른 경우
ZZJJing
2023. 4. 12. 14:46
반응형
이번 프로젝트를 하면서
게시글 형태이긴 하나 프레임 코드가 따로 있는 작업을 할 때 사용했던 쿼리이다!
* 글마다 테마가 있어서 코드가 따로 있다.
* 그 글 중에서도 dp_cnt가 있어서 그 테마 중에 가장 dp_cnt가 높은 row로 1개씩만 가지고 와야한다.
* 게시판은 Board 형태라고 치자
예시 ) BOARD TB 컬럼명
컬럼명 | board_idx | title | content | on_date | use_yn | dp_cnt | thema_code |
101 | 제목1 | 내용1 | 20230101 | Y | 2 | A | |
100 | 제목2 | 내용2 | 20211201 | Y | 1 | A | |
202 | 제목3 | 내용3 | 20230401 | Y | 3 | B | |
303 | 제목4 | 내용4 | 20230411 | Y | 4 | B | |
333 | 제목5 | 내용5 | 20230212 | Y | 5 | C |
SELECT
AA.*
, ROW_NUMBER() OVER (ORDER BY DP_CNT) RNUM
FROM
(
SELECT
ROW_NUMBER() OVER(PARTITION BY THEMA_CODE ORDER BY DP_CNT) RN
, BOARD_IDX
, TITLE
, CONT
, ON_DATE
, USE_YN
, DP_CNT
, THEMA_CODE
FROM
BOARD
WHERE
USE_YN = 'Y'
ORDER BY
DP_CNT
)AA
WHERE
RN = 1
이런식으로 partition by 로 구분해주고
원하는 컬럼으로 정렬한후 상단한게만 가져올 수 있었다!
상황에 맞게 응용해서 사용해보자
728x90
반응형