hdonghun / SQL

1 stars 0 forks source link

#WINDOW 함수 #27

Open hdonghun opened 2 years ago

hdonghun commented 2 years ago

WINDOW 함수

1. 함수 (컬럼) OVER (PARTITION BY 컬럼 ORDER BY 컬럼) EX) SUM (PROFIT) OVER (PARTITION BY COUNTRY ORDER BY 컬럼) -PARTITION BY컬럼, ORDER BY 컬럼은 둘중에 하나만 있을 수 있고, 둘다 없을 수도 있다.

  1. 집계 함수(누적함계를 구할때)

    • SELECT SUM (컬럼) OVER (ORDER BY 컬럼) AS CumSum FROM ~
    • SELECT SUM (컬럼) OVER (ORDER BY 컬럼 PARTITION BY 컬럼) AS CumSum FROM ~
  2. 순위 정하기(ROW_NUMBER(), RANK(), DENSE_RANK() EX) SELECT 컬럼, ROW_NUMBER() OVER (ORDER BY VAL) AS 'row_number', RANK() OVER (ORDER BY val) AS 'rank', DENSE_RANK() OVER (ORDER BY val) AS 'dense_rank' FROM sample --( ) 안에 인자가 없다! ROW_NUMBER() : 중복이 없다! RANK() : 중복이 있다, 첫번쨰에 중복이되면 다음 수는 스킵하고 세번쨰로 나타낸다. DENSE_RANK() : 중복이 있다, RNAK()와 다르게 중복이 되어도 스킵없이 순서대로 나열한다.

  3. 데이터 위치 바꾸기 LEAD() 당기고, LAG() 밀고 EX) (1) LAG(Temperature) OVER (ORDER BY RecordDate) AS 'lag' LEAD(Temperature) OVER (ORDER BY RecordDate) AS 'lead' (2) 두칸씩 밀고, 당기고 싶을떄 LAG(Temperature,2) OVER (ORDER BY RecordDate) AS 'lag' LEAD(Temperature,2,0) OVER (ORDER BY RecordDate) AS 'lead' 숫자 0은 디폴트 값이다. NULL대신에 0이 들어간다!

hdonghun commented 2 years ago

PIVOT TABLE형식의 문제를 풀때 사용하면 유용함! ROW_NUMBER | - 동일 순위에 고유 순위 부여