MySQLで日付ごとのデータの累積値を取得する
概要
データ分析や時系列の可視化を行う際、日付ごとのデータの累積値を取得することは非常に重要です。本記事では、MySQLのウィンドウ関数を使用して、日付ごとの累積値を効率的に取得する方法を説明します。
使用するデータ
ここでは、仮想の `sales` テーブルを使用します。このテーブルには、日付と売上金額の情報が保存されています。
+------------+--------+
| date | amount |
+------------+--------+
| 2023-01-01 | 100 |
| 2023-01-02 | 150 |
| 2023-01-03 | 200 |
| 2023-01-04 | 180 |
| 2023-01-05 | 220 |
+------------+--------+
SQL クエリ
以下のクエリを使用すると、日付ごとの累積売上を取得できます:
SELECT
date,
SUM(amount) OVER (ORDER BY date) AS cumulative_sales
FROM
sales
ORDER BY
date;
実行結果
上記のクエリを実行すると、以下のような結果が得られます:
+------------+---------------+
| date | cumulative_sales |
+------------+---------------+
| 2023-01-01 | 100 |
| 2023-01-02 | 250 |
| 2023-01-03 | 450 |
| 2023-01-04 | 630 |
| 2023-01-05 | 850 |
+------------+---------------+
この結果は、日付順にデータが並んでおり、`SUM(amount) OVER (ORDER BY date)`によって、各日付時点での累積売上が計算されています。
解説
`SUM(amount) OVER (ORDER BY date)` のように、ウィンドウ関数 `SUM() OVER ()`を使用しています。
`ORDER BY date`により、データを日付順にソートしています。
ウィンドウ関数は、現在の行から過去のすべての行までを累積範囲として計算を行います。
結果は日付順にソートされ、各行の `cumulative_sales` 列に累積値が格納されています。
まとめ
MySQLのウィンドウ関数を使用することで、簡単なクエリで日付ごとのデータの累積値を取得できます。この方法は、時系列分析やレポート作成などのユースケースで非常に強力です。