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

Filtrelenmiş toplamları hesaplama

Belirli filtre ölçütlerine göre bir olayın kaç kez gerçekleştiğini saymak istiyorsak, SUM(), MIN() ve MAX() gibi toplama fonksiyonlarından ve CASE ifadelerinden yararlanabiliriz. Örneğin, SUM(CASE WHEN ir.IncidentTypeID = 1 THEN 1 ELSE 0 END) ifadesi, olay türü 1 ile ilişkili olayların sayısını döndürür. Her olay türü için bir SUM() ifadesi eklersen, veri kümesini olay türü ID'sine göre pivotlamış olursun.

Bu senaryoda, yönetim bizden olay türüne göre kaç "büyük olay" günü ve kaç "küçük olay" günü yaşadığımızı söylememizi istiyor. Yönetim, aynı gün içinde aynı olay türünden 5'ten fazla gerçekleşmesini büyük olay günü, 1 ile 5 arası gerçekleşmesini ise küçük olay günü olarak tanımlıyor.

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

SQL Server'da Zaman Serisi Analizi

Kursa Göz Atın

Egzersiz talimatları

  • SUM() fonksiyonunu kullanarak büyük olay günü ve küçük olay günü sayılarını hesaplamamıza imkan veren bir CASE ifadesi doldur.
  • CASE ifadesinde, uygun filtre ölçütü sağlanıyorsa 1, aksi halde 0 döndürmelisin.
  • Bir sütuna başvururken mutlaka takma adını belirt, örneğin ir.IncidentDate veya it.IncidentType gibi!

Uygulamalı etkileşimli egzersiz

Bu egzersizi bu örnek kodu tamamlayarak deneyin.

SELECT
	it.IncidentType,
    -- Fill in the appropriate expression
	SUM(___ WHEN ir.NumberOfIncidents > 5 THEN ___ ELSE ___ ___) AS NumberOfBigIncidentDays,
    -- Number of incidents will always be at least 1, so
    -- no need to check the minimum value, just that it's
    -- less than or equal to 5
    SUM(___ WHEN ir.NumberOfIncidents <= 5 THEN ___ ELSE ___ ___) AS NumberOfSmallIncidentDays
FROM dbo.IncidentRollup ir
	INNER JOIN dbo.IncidentType it
		ON ir.IncidentTypeID = it.IncidentTypeID
WHERE
	ir.IncidentDate BETWEEN '2019-08-01' AND '2019-10-31'
GROUP BY
it.IncidentType;
Kodu Düzenle ve Çalıştır