Giảm mẫu xuống mức ngày (daily grain)
Tổng hợp dữ liệu lên mức hạt (grain) cao hơn là một tác vụ phân tích phổ biến. Đôi khi bạn có bộ dữ liệu với dấu thời gian cụ thể và cần quan sát kết quả đã được tổng hợp. Trong SQL Server, có một số kỹ thuật tùy vào mức hạt bạn muốn.
Trong các bài tập này, chúng ta sẽ xem xét một tiệm spa giả định. Ban quản lý spa đã gửi phiếu giảm giá cho khách hàng tiềm năng trong giai đoạn từ ngày 16 đến 20 tháng 6 năm 2020 và muốn xem liệu chiến dịch này có thúc đẩy các lượt ghé thăm mới hay không.
Ở bài này, chúng ta sẽ xem một trong những kỹ thuật downsampling đơn giản nhất: chuyển đổi kiểu dữ liệu DATETIME2 hoặc DATETIME sang kiểu dữ liệu chỉ có ngày, không có thành phần thời gian: kiểu DATE.
Bài tập này là một phần của khóa học
Phân tích chuỗi thời gian trong SQL Server
Hướng dẫn bài tập
- Downsample thời điểm bắt đầu lượt ghé thăm của khách theo mức ngày và tổng hợp kết quả.
- Điền mệnh đề GROUP BY với mọi giá trị không được tổng hợp trong mệnh đề SELECT (nhưng không dùng bí danh như
AS Day).
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
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;