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

SQL Server'da ortanca hesaplama

SQL Server'da MEDIAN() işlevi yok. En yakını, bir veri kümesi boyunca n'inci yüzdelikteki değeri bulan PERCENTILE_CONT().

Olay özet setimizde, olay türüne göre ortancanın ortalamadan ne kadar saptığını bulmak istiyoruz. Bunu yapmak için, önceki egzersizdeki AVG() işlevini PERCENTILE_CONT() ile karşılaştırabiliriz. Bunlar pencere (window) işlevleridir; bunları 4. bölümde daha ayrıntılı ele alacağız. Şimdilik bilmen gereken, PERCENTILE_CONT()'un bir parametre aldığıdır: yüzdelik (0 ile 1 arasında ondalık). Yüzdelik, WITHIN GROUP cümleciği içinde sıralanmış bir grup kapsamında olmalı ve veriyi bölümlendirmen gerekiyorsa belirli bir aralık üzerinde OVER ile belirtilmelidir. WITHIN GROUP bölümünde, 50. yüzdeliğini istediğimiz sütuna göre sıralama yapmamız gerekir.

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

SQL Server'da Zaman Serisi Analizi

Kursa Göz Atın

Egzersiz talimatları

  • PERCENTILE_CONT() için eksik değeri doldur.
  • WITHIN GROUP() cümleciğinde, olay sayısına göre azalan sıralama yap.
  • OVER() cümleciğinde, IncidentType (gerçek metin değeri, kimlik numarası değil) ile bölümlendir.

Uygulamalı etkileşimli egzersiz

Bu egzersizi bu örnek kodu tamamlayarak deneyin.

SELECT DISTINCT
	it.IncidentType,
	AVG(CAST(ir.NumberOfIncidents AS DECIMAL(4,2)))
	    OVER(PARTITION BY it.IncidentType) AS MeanNumberOfIncidents,
    --- Fill in the missing value
	PERCENTILE_CONT(___)
    	-- Inside our group, order by number of incidents DESC
    	WITHIN GROUP (ORDER BY ir.___ DESC)
        -- Do this for each IncidentType value
        OVER (PARTITION BY it.___) AS MedianNumberOfIncidents,
	COUNT(1) OVER (PARTITION BY it.IncidentType) AS NumberOfRows
FROM dbo.IncidentRollup ir
	INNER JOIN dbo.IncidentType it
		ON ir.IncidentTypeID = it.IncidentTypeID
	INNER JOIN dbo.Calendar c
		ON ir.IncidentDate = c.Date
WHERE
	c.CalendarQuarter = 2
	AND c.CalendarYear = 2020;
Kodu Düzenle ve Çalıştır