๋ฐ์ํ
๋ชฉ์ฐจ
1. LAG
: ์ด์ ํ์ ๊ฐ์ ๊ฐ์ ธ์ฌ ์ ์๋ค.
- LAG(col_name) OVER(ORDER BY )
SELECT LAG(job) OVER(ORDER BY job, empno) AS JOB_PREV
job, empno ๊ธฐ์ค ์ ๋ ฌํ์ฌ ์ด์ ๊ฐ์ JOB_PREV ์ด๋ก ๊ฐ์ ธ์ด.
2. LEAD
: ๋ค์ ํ์ ๊ฐ์ ๊ฐ์ ธ์ฌ ์ ์๋ค.
- LEAD(col_name) OVER(ORDER BY )
SELECT LEAD(job) OVER(ORDER BY job, empono) AS JOB_NEXT
job, empno ๊ธฐ์ค ์ ๋ ฌํ์ฌ ๋ค์ ๊ฐ์ JOB_NEXT ์ด๋ก ๊ฐ์ ธ์ด.
3. ๊ณ ๊ธ ์ฌ์ฉ
1) ๊ฐ์ ธ์ฌ ํ์ ์์น ์ง์ ํ๊ธฐ
๋ฐ๋ก ์ด์ , ๋ค์ ๊ฐ์ด ์๋๋ผ nํ ๋ค์ ์๋, ์์ ์๋ ๋ฑ์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๊ณ ์ถ์ ๊ฒฝ์ฐ ์ฌ์ฉํ ์ ์๋ค .
- LAG/LEAD(col_name,ํ์ ์์น) OVER(ORDER BY )
SELECT
LAG(sal,2) OVER(ORDER BY sal) AS sal_prev2
LEAD(sal,2) OVER(ORDER BY sal) AS sal_next2
2) NULL์ธ ๊ฒฝ์ฐ ๋์ฒด ๊ฐ ์ง์ ํ๊ธฐ
- LAG/LEAD(col_name,ํ์ ์์น, default) OVER(ORDER BY )
SELECT
LEAD(sal,4,0) OVER(ORDER BY sal) AS sal_next4
โ๏ธ ์ฃผ์ํด์ผํ ์ ์ ์ค์ ๊ฐ์ด NULL์ธ ๊ฒฝ์ฐ์๋ ๋์ฒด๊ฐ์ด ์๋ NULL๋ก ํ์๋๋ค.
3) ๊ทธ๋ฃน๋ณ๋ก ์ด์ ,๋ค์ ๊ฐ ๊ฐ์ ธ์ค๊ธฐ
SELECT
LAG(sal) OVER(PARTITION BY job ORDER BY job,sal) as sal_prev
PARTITION BY๋ฅผ ํตํด ํด๋น ๊ทธ๋ฃน ๋ด๋ถ์์ ์ด์ , ๋ค์ ๊ฐ์ ์ฐพ๋๋ค
๋ฐ์ํ
'๐๏ธ ๋ฐ์ดํฐ ๋ถ์ > ๐ SQL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์ด๋ํ๊ท ์ ๊ฐ๋ ๊ณผ SQL์์ ๊ตฌํํ๊ธฐ (3) | 2024.12.14 |
---|---|
COALESCE( )๋ฅผ ํตํด NULL๊ฐ ๋ณํํ๊ธฐ (1) | 2024.12.14 |
COUNT OVER( )๋ก ๊ทธ๋ฃน๋ณ ์ง๊ณํ๊ธฐ (2) | 2024.12.14 |
์์ํจ์ : ROW_NUMBER( ) ์ RANK( ), DENSE_RANK( ) ์ ๊ฐ๋ ๊ณผ ์ฐจ์ด (4) | 2024.12.14 |
DATE ๋ ์ง ํฌ๋งท ๊ด๋ จ ํจ์ : DATE_FORMAT (3) | 2024.12.08 |