Mulai sekarangMulai gratis

Downsample menggunakan tabel kalender

Manajemen menyukai laporan mingguan tersebut, tetapi mereka ingin melihat setiap minggu di tahun 2020, bukan hanya minggu-minggu dengan penggunaan fasilitas. Kita dapat menggunakan tabel kalender untuk menyelesaikan masalah ini: tabel kalender mencakup semua minggu, sehingga kita dapat menggabungkannya dengan tabel dbo.DaySpaVisit untuk menemukan jawabannya.

Manajemen juga ingin melihat hari pertama setiap minggu kalender, karena itu memberikan konteks penting bagi pembaca laporan.

Latihan ini merupakan bagian dari kursus

Analisis Deret Waktu di SQL Server

Lihat Kursus

Instruksi latihan

  • Temukan dan sertakan minggu dalam tahun kalender.
  • Sertakan nilai minimum c.Date di setiap grup sebagai FirstDateOfWeek. Ini berhasil karena kita mengelompokkan berdasarkan minggu.
  • Gabungkan tabel Calendar dengan tabel DaySpaVisit berdasarkan tanggal pada tabel kalender dan tanggal kunjungan setiap pelanggan spa harian. CustomerVisitStart adalah DATETIME2 yang menyertakan waktu, sehingga penggabungan langsung hanya akan menyertakan kunjungan yang dimulai tepat pada tengah malam.
  • Kelompokkan berdasarkan minggu dalam tahun kalender.

Latihan interaktif langsung praktik

Cobalah latihan ini dengan melengkapi kode contoh ini.

SELECT
	-- Determine the week of the calendar year
	c.___,
	-- Determine the earliest DATE in this group
    -- This is NOT the DayOfWeek column
	MIN(c.___) AS FirstDateOfWeek,
	ISNULL(SUM(dsv.AmenityUseInMinutes), 0) AS AmenityUseInMinutes,
	ISNULL(MAX(dsv.CustomerID), 0) AS HighestCustomerID,
	COUNT(dsv.CustomerID) AS NumberOfAttendees
FROM dbo.Calendar c
	LEFT OUTER JOIN dbo.DaySpaVisit dsv
		-- Connect dbo.Calendar with dbo.DaySpaVisit
		-- To join on CustomerVisitStart, we need to turn 
        -- it into a DATE type
		ON c.Date = CAST(dsv.___ AS ___)
WHERE
	c.CalendarYear = 2020
GROUP BY
	-- When we use aggregation functions like SUM or COUNT,
    -- we need to GROUP BY the non-aggregated columns
	c.___
ORDER BY
	c.CalendarWeekOfYear;
Edit dan Jalankan Kode