rows between unbounded preceding and current row 관련 질문
532
작성한 질문수 11
집계 Analytic SQL에서
rows between unbounded preceding and current row 관련 질문 드립니다.
sum(amount) over (partition by order_id order by line_prod_seq) as cum_sum_by_orderid
sum(amount) over (partition by order_id rows between unbounded preceding and current row) as cum_sum_by_orderid2
1의 경우와 2의 경우가 값이 같은데
partition이 되어 있고 윈도우 설정이 어차피 상위 row에서 부터 누적되는 값이라면 'order by line_prod_seq'이 없어도 되지 않나 하는 생각이 듭니다.
그럼에도 불구하고 'order by line_prod_seq'을 굳이 명시해줘야 하는 이유가 있을까요? 어떤 데이터의 경우 이 부분이 없으면 문제가 생길 수 있나요?
답변 1
1
안녕하십니까,
sum analytic 을 해주실때는 반드시 order를 설정해 주시는게 좋습니다. 그래야만 window의 방향성을 SQL에서 직관적으로 확인할 수 있기 때문입니다.
말씀하신대로 데이터가 order id 별로 line_prod_seq 순서적으로 생성되면 아래와 같이 작성하여도 running sum 이 만들어 집니다.
sum(amount) over (partition by order_id rows between unbounded preceding and current row)
하지만 이는 데이터의 생성 순서가 order_id + line_prod_seq로 입력되어 데이터가 그렇게 생성되었기 때문에 결과가 동일할 뿐이지, order_id별로 line_prod_seq 순서로 데이터가 생성되지 않거나 중간에 update가 발생하거나 할 경우에는 다른 결과를 가져 올 수 있습니다.
때문에 sum analytic을 사용할 때는 order by를 사용해서 명확하게 window의 방향성을 기재해 주는 것이 좋습니다.
감사합니다.
'레벨 유지'의 의미에 대한 질문
0
53
2
date_part
0
55
2
lag/lead offset 관련 질문
0
55
2
join 관련 질문 (inner join, left join)
1
100
2
배치에서 full outer join을 쓴다고 하셨는데 예시를 알 수 있을까요?
0
89
2
Madrid에 살고 있는 고객이 주문한 주문 정보를 구할것. 실습 질문드립니다
0
53
2
rollup시 null값 매출 라벨링
0
54
2
10. 조인 실습 - 02 관련 질문
0
59
1
조인실습03 - join의 pk-fk join
0
108
2
조인실습03 - join의 pk-fk join
0
68
2
(공유)맥, 스키마 import
0
81
2
sql 입문자인데, 이 강의와 sql 코딩테스트와 연관이 있을까요?
0
137
2
1인지 M인지는 결국엔 테이블을 직접 확인을 해야 하는걸까요?
0
131
2
안녕하세요. 튜닝핵심가이드강의 관련해서 여쭤보고 싶어서 남깁니다.
0
91
1
섹션5 Group by 실습-01 강의 예제 질문
0
117
2
섹션2 조인 기반 메커니즘에서 조인 실습 - 04 강의 예제 질문
0
123
2
섹션2 조인 실습 01 강의 질문
0
133
2
lead lag 이해 강의에서 윈도우 절은 사용되지 않습니다.
0
127
1
Dbeaver오류
0
630
2
직원 별 가장 높은 매출
0
118
1
강의순서대로 실습코드순알려주세요.
0
133
1
m:n inner join일 경우 cross조인과 동일하게 동작되는건가요?
0
130
1
rollup
0
91
2
Dbeaver에 접속해도 postgressql이 네비게이터에 안보입니다.
0
355
2





