이번 프로젝트를 하면서
게시글 형태이긴 하나 프레임 코드가 따로 있는 작업을 할 때 사용했던 쿼리이다!
* 글마다 테마가 있어서 코드가 따로 있다.
* 그 글 중에서도 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 로 구분해주고
원하는 컬럼으로 정렬한후 상단한게만 가져올 수 있었다!
상황에 맞게 응용해서 사용해보자
'DB' 카테고리의 다른 글
교육용 무료 Oracle XE 21c 설치 및 롤백 오류 해결 (0) | 2024.03.13 |
---|---|
Oracle 컬럼 카테고리별로 순위 매기는 방법 (0) | 2023.03.04 |
[Oracle SQL Developer] 엑셀 data import (밀어 넣기) (0) | 2021.03.05 |
[DB데이터 내보내기] SSMS18 데이터 내보내기 (0) | 2021.03.05 |
MS-SQL 과 SQL-Server ? (0) | 2020.06.05 |