SQLを使用した実行中の合計の計算-Wagon

SQLを使用した実行中の合計の計算October20,2015|Andy Granowitz

#sql

最後の5ヶ月に参加したユーザーは何人ですか? Q2の総売上高は何でしたか? 月のサインアップコホートからどのくらいの収入が来ましたか?

これらの質問には単一の番号で回答できますが、時間の経過とともに実行された合計を確認すると便利です。

通常、データは増分的に格納されます。 たとえば、1日あたりの売上高の表は次のとおりです:

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. この場合、実行中の合計を計算するために、各日付をそれ以下の日付と比較しています。 具体的には、最初のテーブルからの日付以下の日付を持つすべての行に対して、2番目のテーブルのsalesの合計を取ります。 これはPostgres/Redshift構文ですが、他のSQL方言は非常に似ています。これは悪いアプローチではありません。selectfromjoingroup byステートメントのみを使用する拡張可能なSQLの良しかし、それは簡単なタスクのためのコードがたくさんあります。

ウィンドウ関数を試してみましょう。 これらは、一連の行のメトリックを計算するように設計されています。 私たちの場合、日付が現在の行の日付以下のすべての行を合計したいとします。

window関数は、関数を実行する行のセットをフィルタリングして配置することができます。 ここでは、order by date rows unbounded precedingsum関数を現在の行の日付の前にのみsalesに制限します。 ウィンドウ関数は、時間ベースの分析クエリに非常に便利です; 詳細については、Postgresのドキュメントを開始するのに最適な場所です。

チャートを作成し、チームメイトと意気揚々と共有する最後のステップは、Wagonを使用して簡単に達成できます。 勝利のためのウィンドウ機能!

Wagonは、アナリストやエンジニアのための近代的なSQLエディタです:クエリを記述し、データを視覚化し、あなたのチームとグラフを共有します。 無料でサインアップ:

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です