BaşlayınÜcretsiz başlayın

Tek bir sorguda birden çok toplulaştırmayı birleştir

Son üç egzersizde ROLLUP, CUBE ve GROUPING SETS gruplama işleçlerini adım adım gördük. Bu üçü arasında, GROUPING SETS en özelleştirilebilir olanıdır ve tam olarak istediğin toplulaştırma seviyelerini kurmana izin verir. GROUPING SETS, hiyerarşi hakkında hiçbir varsayımda bulunmaz ( ROLLUP'ın aksine) ve iyi sayıda sütunla yönetilebilir kalır (CUBE'un aksine).

Bu egzersizde, verilerimizle birkaç varsayımı test etmek istiyoruz:

  1. Kasım 2019'da eğitimi başlattığımızdan beri ay başına düşen olay sayısı azaldı.
  2. Salı günleri, diğer hafta içi günlerine kıyasla daha fazla olay gerçekleşiyor.
  3. Hafta sonları, hafta içinden daha fazla olay gerçekleşiyor.

Bu egzersiz, kursun bir parçasıdır

SQL Server'da Zaman Serisi Analizi

Kursa Göz Atın

Egzersiz talimatları

Yukarıdaki varsayımlara göre grouping set'leri doldur. Toplam genel değere ek olarak aşağıdaki grouping set'leri görmek istiyoruz:

  • Takvim yılı ve aya göre bir set
  • Haftanın gününe göre bir set
  • Tarihin hafta sonu olup olmadığına göre bir set

Uygulamalı etkileşimli egzersiz

Bu egzersizi bu örnek kodu tamamlayarak deneyin.

SELECT
	c.CalendarYear,
	c.CalendarMonth,
	c.DayOfWeek,
	c.IsWeekend,
	SUM(ir.NumberOfIncidents) AS NumberOfIncidents
FROM dbo.IncidentRollup ir
	INNER JOIN dbo.Calendar c
		ON ir.IncidentDate = c.Date
GROUP BY GROUPING SETS
(
    -- Each non-aggregated column from above should appear once
  	-- Calendar year and month
	(___, ___),
  	-- Day of week
	(___),
  	-- Is weekend or not
	(___),
    -- This remains empty; it gives us the grand total
	()
)
ORDER BY
	c.CalendarYear,
	c.CalendarMonth,
	c.DayOfWeek,
	c.IsWeekend;
Kodu Düzenle ve Çalıştır