카테고리 없음
oracle rank partiotion by
een
2020. 7. 14. 16:50
WITH tab1 AS (
SELECT
RANK() OVER (PARTITION BY tab2.type_code ORDER BY tab2.val1 DESC, tab2.reg_date DESC) AS RANK
,tab2.type_code AS type_code
,tab2.val1 AS max_val1
,SUBSTR(tab2.reg_date,1,4) || '-' || SUBSTR(tab2.reg_date,5,2) || '-' || SUBSTR(tab2.reg_date,7,2) AS max_val1_date
FROM (
SELECT '01' type_code,'1260' val1,'20200329' reg_date FROM DUAL UNION ALL
SELECT '01' type_code,'1252' val1,'20200322' reg_date FROM DUAL UNION ALL
SELECT '01' type_code,'1249' val1,'20200531' reg_date FROM DUAL UNION ALL
SELECT '01' type_code,'1242' val1,'20200503' reg_date FROM DUAL UNION ALL
SELECT '01' type_code,'1239' val1,'20200426' reg_date FROM DUAL UNION ALL
SELECT '02' type_code,'1385' val1,'20200607' reg_date FROM DUAL UNION ALL
SELECT '02' type_code,'1376' val1,'20200322' reg_date FROM DUAL UNION ALL
SELECT '02' type_code,'1376' val1,'20200621' reg_date FROM DUAL UNION ALL
SELECT '02' type_code,'1372' val1,'20200614' reg_date FROM DUAL UNION ALL
SELECT '02' type_code,'1371' val1,'20200531' reg_date FROM DUAL) tab2
)
SELECT tab1.type_code, tab1.max_val1, tab1.max_val1_date
FROM tab1
WHERE tab1.RANK = 1
;