始める無料で始める

週単位の粒度へダウンサンプリングする

マネジメントは、2020年にスパがどの程度利用されたかを確認したいと考えています。週ごとの結果として、アメニティ利用の合計分数、来場者数、その週でもっとも大きい Customer ID を持つ顧客(新規顧客が来ているかを見るため)を確認したいとのことです。

SQL Server の関数を使えば、このように固定の粒度へダウンサンプリングできます。その一つが DATEPART() です。

この演習はコースの一部です

SQL Serverで学ぶ時系列分析

コースを見る

演習の手順

  • DATEPART() 関数を使って、デイスパの訪問データを週単位の粒度にダウンサンプリングします。
  • 各週でもっとも大きい Customer ID を持つ顧客を求めます。
  • SELECT 句で集計していない値があれば、それらを(AS Week のようなエイリアスは付けずに)GROUP BY 句にすべて指定します。

実践的なインタラクティブ演習

このサンプルコードを完成させて、この演習に挑戦してみましょう。

SELECT
	-- Downsample to a weekly grain
	___(___, dsv.CustomerVisitStart) AS Week,
	SUM(dsv.AmenityUseInMinutes) AS AmenityUseInMinutes,
	-- Find the customer with the largest customer ID for that week
	___(dsv.___) AS HighestCustomerID,
	COUNT(1) AS NumberOfAttendees
FROM dbo.DaySpaVisit dsv
WHERE
	dsv.CustomerVisitStart >= '2020-01-01'
	AND dsv.CustomerVisitStart < '2021-01-01'
GROUP BY
	-- When we use aggregation functions like SUM or COUNT,
    -- we need to GROUP BY the non-aggregated columns
	___(___, dsv.CustomerVisitStart)
ORDER BY
	Week;
コードを編集して実行