降采样到每日粒度
将数据汇总到更高的粒度是常见的分析任务。我们可能拥有带有具体时间戳的数据集,但需要查看聚合后的结果。在 SQL Server 中,可用的技术有多种,取决于您所需的粒度。
在这些练习中,我们将使用一家虚构的日间水疗会所。管理层向潜在新客户发送了 2020 年 6 月 16 日至 20 日期间可用的优惠券,并希望了解这次活动是否带动了新的来访。
在本练习中,我们将采用最简单的降采样技术之一:将 DATETIME2 或 DATETIME 类型转换为只有日期、没有时间部分的数据类型:DATE。
本练习是课程的一部分
SQL Server 中的时间序列分析
练习说明
- 将客户来访开始时间降采样到每日粒度并聚合结果。
- 在 GROUP BY 子句中填写 SELECT 子句里所有未聚合的值(但不要包含类似
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;