Study/database
[database κ³ κΈ] μλμ° ν¨μ (2023.08.09)
Shinjio
2023. 8. 9. 15:25
λ°μν
SELECT PRD_ID
, PRD_NAME
, PRD_AMT
, DENSE_RANK() OVER (ORDER BY PRD_AMT DESC) AS κ°κ²©λμμ
FROM TB_PRD;
μλμ°ν¨μ : ν μ΄λΈμ νκ³Ό νκ°μ κ΄κ³λ₯Ό μ΄μ©ν΄μ μλ―Έμλ λ°μ΄ν°λ₯Ό λ½λλ€.
- RANK : μ€λ³΅λ μμ λ€μ μ«μ 건λλ
- DENSE_RANK : μ€λ³΅λ μμ λ€μ μ«μ 건λλ°μ§ μμ
- ROW_NUMBER : κ³ μ ν μ«μ
μ€νμμ
μΈλΌμΈλ·°λ₯Ό μ΄μ©ν΄μ 쑰건 λΆμ¬ κ°λ₯
SELECT *
FROM (
SELECT PRD_ID
, PRD_NAME
, PRD_AMT
, DENSE_RANK() OVER (ORDER BY PRD_AMT DESC) AS κ°κ²©λμμ
FROM TB_PRD
)
WHERE κ°κ²©λμμ <= 5;
μμ ν μ΄λΈ μμ± : WITH - AS
μΈλΌμΈλ·°κ° λ무 κΈΈμ΄μ§λ©΄ WITHλ‘ μ μΈ ν SELECT μμ νμ©
PARTITION BY
SELECT κ²½κΈ°μ₯ , μΉμ , ν¨μ , μ μμ°¨
, ROW_NUMBER() OVER ( PARTITION BY κ²½κΈ°μ₯ ORDER BY μ μμ°¨ DESC ) AS
RNUM
FROM μλμ»΅κ²½κΈ°λ΄μ
κ·Έλ£Ήλ³ 1λ±κ³Ό κ°μ 쑰건 λΆμ¬ν λ ROW_NUMBER, PARTITION BYμ ν¨κ» λ§μ΄ μ¬μ©
GROUP BYλ μ€μ λ‘ νμ΄ μ€μ΄λ²λ¦°λ€.
PARTITION BYλ νμ΄ μ€μ§ μλλ€. (μλ³Έ κ·Έλλ‘ μ μ§)
SELECT κ²½κΈ°μ₯ , μΉμ , ν¨μ , μ μμ°¨
FROM (
SELECT κ²½κΈ°μ₯ , μΉμ , ν¨μ , μ μμ°¨
, ROW_NUMBER() OVER ( PARTITION BY κ²½κΈ°μ₯ ORDER BY μ μμ°¨ DESC ) AS
RNUM
FROM μλμ»΅κ²½κΈ°λ΄μ
)
WHERE RNUM = 1;
LEAD, LEG
- LEG : νμ¬ λ°μ΄ν° κΈ°μ€ μ΄μ λ°μ΄ν° κ°μ Έμ¬ λ
- LEAD : νμ¬ λ°μ΄ν° κΈ°μ€ μ΄ν λ°μ΄ν° κ°μ Έμ¬ λ
(μ’ κ°, 1, 0)
μ’ κ° : κΈ°μ€
1 : 1κ° μ΄μ νΉμ μ΄ν
0 : DEFAULT
SELECT μ’
λͺ©
, μΌμ
, μ’
κ°
, LAG(μ’
κ° ,1, 0) OVER(ORDER BY μΌμ) AS μ λ λλΉμ’
κ°μ°¨μ΄
, μ’
κ° - LAG(μ’
κ° ,1, 0) OVER(ORDER BY μΌμ) AS μ λ λλΉμ’
κ°μ°¨μ΄
FROM STOCK
;
λ°μν