그룹정렬쿼리1
개요
❗순서
💡 STEP1. SELECT 조회
💡 STEP2. 조회결과 중복값 존재
💡 STEP3. 중복값에서 특정 컬럼값의 내용중 특정패턴(여기서는 날짜) 의 크기 기준으로 정렬 수행
💡 STEP4. 정렬된 행에서 가장 큰 것만 출력
내용
SELECT *
FROM
(
SELECT 첨부파일관리번호
, 첨부파일명 --Blang_A_adBanResult_20231001.txt / Blang_B_adBanResult_202305.txt
, ROW_NUMBER() OVER (PARTITION BY
첨부파일명,
CASE WHEN length(regexp_substr(첨부파일명, '₩d{8}')) = 8 then to_date(regexp_substr(첨부파일명, '₩d{8}'), 'YYYYMMDD')
WHEN length(regexp_substr(첨부파일명, '₩d{6}')) = 6 then to_date(regexp_substr(첨부파일명, '₩d{6}'), 'YYYYMM')
ELSE null
END
ORDER BY 첨부파일관리번호 desc) as rn
FROM 테이블 T1
WHERE 첨부파일명 LIKE 'Blang%'
)
WHERE rn = '1';
❗순서
💡 SELECT 조회
==> YYYYMMDD, YYYYMM 형태 파일이 존재💡 조회결과 중복값 존재
==> 중복제거를 위해 ROW_NUMBER 를 작성💡 중복값에서 특정 컬럼값의 내용중 특정패턴(여기서는 날짜) 의 크기 기준으로 정렬 수행
==> [첨부파일] 그룹별로 묶고 그안에서 [유형별]로 묶어서 파티션 처리 수행💡 정렬된 행에서 가장 큰 것만 출력
==> 스칼라쿼리 에서 ‘1’ 조건.
Leave a comment