2015-11-23 24 views
0

查詢如何在SQL查詢中查找中位數?

SELECT SpaID, COUNT(1) AS Total FROM dbo.[Order] (nolock) 

WHERE DateCreated BETWEEN '04-01-2014' AND '04-30-2014' 

GROUP BY SpaID 

我需要找到一個名爲新列的中間金額「總計」。
有誰知道如何做到這一點?

+0

上述查詢的結果集將給我7366個結果。我需要對這些結果進行排序,並找出結果集中間的哪些行。 –

+1

這可能會有所幫助:http://stackoverflow.com/questions/1342898/function-to-calculate-median-in-sql-server –

回答

0
WITH X AS 
(
SELECT * --SpaID, COUNT(1) AS Total 
FROM dbo.[Order] (nolock) 
WHERE DateCreated BETWEEN '04-01-2014' AND '04-30-2014' 
) 
SELECT 
(
SELECT MAX(SpaID) As Bottom50 
    FROM (Select TOP (50) PERCENT SpaID FROM X ORDER BY SpaID ASC) a 
+ 
    SELECT MAX(SpaID) As Top50 
    FROM (Select TOP (50) PERCENT SpaID FROM X ORDER BY SpaID DESC) b 
)/2 AS Median