शुरू करेंमुफ़्त में शुरू करें

कैलेंडर टेबल का उपयोग करके डाउनसैंपल करें

मैनेजमेंट को साप्ताहिक रिपोर्ट पसंद आई, लेकिन वे 2020 के हर सप्ताह को देखना चाहते थे, न कि केवल वे सप्ताह जिनमें amenity usage था। हम इसे कैलेंडर टेबल से सुलझा सकते हैं: कैलेंडर टेबल में सभी सप्ताह शामिल होते हैं, इसलिए हम इसे dbo.DaySpaVisit टेबल के साथ जोड़कर अपना उत्तर पा सकते हैं।

मैनेजमेंट यह भी देखना चाहते हैं कि प्रत्येक कैलेंडर सप्ताह का पहला दिन कौन सा है, क्योंकि यह रिपोर्ट देखने वालों के लिए महत्त्वपूर्ण संदर्भ देता है.

यह अभ्यास पाठ्यक्रम का हिस्सा है

SQL Server में Time Series Analysis

पाठ्यक्रम देखें

अभ्यास निर्देश

  • कैलेंडर वर्ष के सप्ताह को खोजें और शामिल करें.
  • प्रत्येक समूह में c.Date का न्यूनतम मान FirstDateOfWeek के रूप में शामिल करें। यह इसलिए काम करता है क्योंकि हम सप्ताह के आधार पर group कर रहे हैं.
  • कैलेंडर टेबल की date और प्रत्येक day spa ग्राहक के visit की date के आधार पर Calendar टेबल को DaySpaVisit टेबल से जोड़ें। CustomerVisitStart एक DATETIME2 है जिसमें समय भी शामिल है, इसलिए direct join केवल वही visits शामिल करेगा जो ठीक आधी रात को शुरू हुए हों.
  • कैलेंडर वर्ष के सप्ताह के आधार पर group करें.

इंटरैक्टिव व्यावहारिक अभ्यास

इस अभ्यास को इस नमूना कोड को पूरा करके आज़माएँ।

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;
कोड संपादित करें और चलाएँ