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

SQL Server में median की गणना

SQL Server में MEDIAN() फंक्शन नहीं है. इसके सबसे नज़दीक PERCENTILE_CONT() है, जो किसी डेटा सेट में दिए गए nवें percentile पर आने वाली वैल्यू निकालता है.

हम यह जानना चाहते हैं कि हमारे incident rollup सेट में incident type के अनुसार median, mean से कितना अलग है. इसके लिए, हम पिछले अभ्यास के AVG() फंक्शन की तुलना PERCENTILE_CONT() से कर सकते हैं. ये window functions हैं, जिनके बारे में हम अध्याय 4 में विस्तार से पढ़ेंगे. अभी के लिए इतना जान लीजिए कि PERCENTILE_CONT() एक पैरामीटर लेता है, percentile (0 से 1 के बीच का दशमलव). अगर आपको डेटा को partition करना हो तो, percentile को WITHIN GROUP क्लॉज़ के अंदर एक ordered group में और किसी निश्चित रेंज OVER रखना होता है. WITHIN GROUP सेक्शन में, हमें उस कॉलम के अनुसार order करना है जिसका 50वाँ percentile हमें चाहिए.

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

SQL Server में Time Series Analysis

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

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

  • PERCENTILE_CONT() के लिए missing वैल्यू भरें.
  • WITHIN GROUP() क्लॉज़ के अंदर, number of incidents के अनुसार descending order करें.
  • OVER() क्लॉज़ में, IncidentType (वास्तविक text वैल्यू, ID नहीं) के अनुसार partition करें.

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

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

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