日単位の粒度にダウンサンプリングする
データをより粗い粒度にまとめることは、よくある分析タスクです。特定のタイムスタンプを持つデータから、集計結果を確認したいことがあります。SQL Server では、望む粒度に応じていくつかの手法が利用できます。
この演習では、架空のデイスパを題材にします。スパの経営陣は、2020 年 6 月 16 日から 20 日の期間に、新規顧客候補へクーポンを配布し、このキャンペーンが新規来店を促進したかを確認したいと考えています。
この演習では、最もシンプルなダウンサンプリング手法のひとつを扱います。DATETIME2 や DATETIME のデータ型を、時刻成分のない日付のみの DATE 型に変換する方法です。
この演習はコースの一部です
SQL Serverで学ぶ時系列分析
演習の手順
- 顧客の来店開始時刻を日単位の粒度にダウンサンプリングし、結果を集計します。
- SELECT 句で集計していない値については、GROUP BY 句を埋めてください(ただし、
AS Dayのようなエイリアスは除きます)。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
SELECT
-- Downsample to a daily grain
-- Cast CustomerVisitStart as a date
___(dsv.CustomerVisitStart AS ___) AS Day,
SUM(dsv.AmenityUseInMinutes) AS AmenityUseInMinutes,
COUNT(1) AS NumberOfAttendees
FROM dbo.DaySpaVisit dsv
WHERE
dsv.CustomerVisitStart >= '2020-06-11'
AND dsv.CustomerVisitStart < '2020-06-23'
GROUP BY
-- When we use aggregation functions like SUM or COUNT,
-- we need to GROUP BY the non-aggregated columns
___(dsv.CustomerVisitStart AS ___)
ORDER BY
Day;