티스토리 뷰

- data


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
CREATE TABLE SALE_AMT (
 
 YYYYMM      VARCHAR2(6NOT NULL,
 
 PROD_ID     NUMBER(2),
 
 SALE       NUMBER(5)
 
 );
 
 
INSERT INTO SALE_AMT VALUES ('200401',1,1000);
 
INSERT INTO SALE_AMT VALUES ('200401',2,2000);
 
INSERT INTO SALE_AMT VALUES ('200401',3,3000);
 
INSERT INTO SALE_AMT VALUES ('200402',1,4000);
 
INSERT INTO SALE_AMT VALUES ('200402',2,5000);
 
INSERT INTO SALE_AMT VALUES ('200403',1,6000);
 
INSERT INTO SALE_AMT VALUES ('200403',3,7000);
 
INSERT INTO SALE_AMT VALUES ('200404',1,8000);
 
cs



- sql : LAG() 동일한 결과 집합에 있는 이전 행의 데이터에 액세스


1
2
3
4
5
6
7
8
SELECT YYYYMM, PROD_ID, SUM(SALE)
 
         ,LAG(SUM(SALE)) OVER( PARTITION BY PROD_ID ORDER BY PROD_ID,YYYYMM ) PREV_SALE
 
FROM SALE_AMT
GROUP BY YYYYMM, PROD_ID
ORDER BY PROD_ID,YYYYMM;
 
cs



result


YYYYMM    PROD_ID  SUM(SALE)  PREV_SALE

------        ----------   ----------     ----------

200401          1          1000          

200402          1          4000           1000

200403          1          6000           4000

200404          1          8000           6000

200401          2          2000          

200402          2          5000           2000

200401          3          3000          

200403          3          7000           3000





- sql : LEAD() 동일한 결과 집합에 있는 다음 행의 데이터에 액세스


1
2
3
4
5
6
7
8
SELECT YYYYMM, PROD_ID, SUM(SALE)
 
          ,LEAD(SUM(SALE)) OVER( PARTITION BY PROD_ID ORDER BY PROD_ID,YYYYMM ) NEXT_SALE
 
FROM SALE_AMT
GROUP BY YYYYMM, PROD_ID
ORDER BY PROD_ID,YYYYMM;
 
cs



result


YYYYMM    PROD_ID  SUM(SALE)  NEXT_SALE

------        ----------   ----------    ----------


200401          1          1000         4000

200402          1          4000         6000

200403          1          6000         8000

200404          1          8000          

200401          2          2000         5000

200402          2          5000          

200401          3          3000         7000

200403          3          7000



- sql : FIRST_VALUE() 정렬된 값 집합의 첫 번째 값을 반환  / LAST_VALUE() 정렬된 값 집합의 마지막 값을 반환


1
2
3
4
5
6
7
SELECT YYYYMM, PROD_ID, SUM(SALE)
 
          ,FIRST_VALUE(SUM(SALE)) OVER( PARTITION BY PROD_ID ORDER BY PROD_ID,YYYYMM ) FIRST_VALUE
 
FROM SALE_AMT
GROUP BY YYYYMM, PROD_ID
ORDER BY PROD_ID,YYYYMM;
cs



result


YYYYMM    PROD_ID  SUM(SALE)  FIRST_VALUE

------         ----------   ----------    ----------

200401          1           1000           

200402          1           4000          1000

200403          1           6000          4000

200404          1           8000          6000

200401          2           2000           

200402          2           5000          2000

200401          3           3000           

200403          3           7000          3000

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함