sql 을 사용하여 실행 합계 계산 2015 년 10 월 20 일|Andy Granowitz
지난 5 개월 동안 몇 명의 사용자가 가입 했습니까? 2 분기 총 매출은 무엇 이었습니까? 3 월 가입 코호트에서 얼마나 많은 수익이 발생 했습니까?
이 질문에 대답할 수 있습니다 하나의 숫자로,그것은을 확인하는 것이 유용할 수 있습는 실행하는 총 시간:는 방법은 사용자가 합류 또는 누적 매출를 받은 날을 통해 일정 기간 동안.일반적으로 데이터는 점진적으로 저장됩니다. 예를 들어 다음은 하루 매출 표입니다:
Date | Sales |
---|---|
10/1/2015 | 5 |
10/2/2015 | 3 |
10/3/2015 | 7 |
10/4/2015 | 8 |
10/5/2015 | 2 |
10/6/2015 | 3 |
10/7/2015 | 6 |
How do we generate the following table of cumulative sales over time? In SQL, there are two typical approaches: a self join or a window function.
Date | Running Total of Sales |
---|---|
10/1/2015 | 5 |
10/2/2015 | 8 |
10/3/2015 | 15 |
10/4/2015 | 23 |
10/5/2015 | 25 |
10/6/2015 | 28 |
10/7/2015 | 34 |
A self join is a query that compares a table to itself. 이 경우 실행중인 총계를 계산하기 위해 각 날짜보다 작거나 같은 날짜와 비교하고 있습니다. 구체적으로,우리 합의sales
에서 두 번째 테이블 위에 모든 행하는 날보다 작거나 같은 날짜에서 나오는 첫 테이블. 이것은 Postgres/Redshift 구문이지만 다른 SQL 방언은 매우 유사합니다.
이것은 나쁜 방법;그것은 좋은 선보일 방법의 확장 가능한 SQL 사용할 수 있습만select
from
join
,andgroup by
문입니다.그러나 간단한 작업을위한 많은 코드입니다. 창 기능을 사용해 봅시다. 이들은 일련의 행을 통해 메트릭을 계산하도록 설계되었습니다. 우리의 경우 날짜가 현재 행의 날짜보다 작거나 같은 모든 행을 합산하려고합니다.
창 함수는 함수를 실행할 행 집합을 필터링하고 정렬 할 수 있습니다. 여기서order by date rows unbounded preceding
sales
로 제한합니다. 창 함수는 시간 기반 분석 쿼리에 매우 유용합니다; 자세히보기,포스트 그레스 문서는 시작하기에 좋은 장소입니다.
차트를 작성하고 팀원들과 의기 양양하게 공유하는 마지막 단계는 왜건을 사용하여 쉽게 수행 할 수 있습니다. 승리를위한 창 기능!
왜건은 현대적인 SQL 편집기를 분석하고 엔지니어:쿼리를 작성,데이터 시각화,그리고 공유 차트 팀과 함께. 무료 가입: