2014-10-30 1 views
0

Я пытаюсь создать столбец в ssrs 2012, который отображает медианную стоимость.Я правильно вычислил медиану для моего набора данных?

Я искал это некоторое время и написал запрос PERCENTILE_CONT, чтобы попытаться достичь этого.

Это запрос я использую:

SELECT srt.Name, 
    cast(sum(sr.price) as int) as AvgCost, 
    cast(sum(sr.cost) as int) as AvgTransCost, 
    cast(avg(sr.TotalTimeSpent) as int) as TotalTimeSpent, 
    percentile_cont(.5) WITHIN GROUP(ORDER BY sum(sr.price)) OVER(PARTITION BY srt.Name) AS MedianSpend 
from 
    ServiceReq sr, ServiceReqTemplate srt 

Когда я запускаю отчет, эти результаты: If you look at the very last row, you'll notice the avgcost is $46, and the cost median is $46.25

является это медиана? Почему все остальные атрибуты и медианы одинаковы? Если я изменяю PERCENTILE_CONT (.5) к PERCENTILE_CONT (.9), нет никаких изменений в средней колонке - что заставляет меня поверить, что это неправильные значения медианы :(

+0

Заменить ORDER BY суммы (sr.price) с ORDER BY sr.price возможно? – Arvo

+0

Я пробовал это, и когда я это сделал, он дал мне «sr.price не содержится ни в агрегатной функции, ни в предложении GROUP BY» – QuestionQuestion

ответ

1

Вы используете PERCENTILE_CONT (CONT = непрерывный)

Вычисляет процентиль, основанный на непрерывном распределении значения столбца в SQL Server. результат интерполируется и может быть не равен ни одному из конкретных значений в столбце.

(http://msdn.microsoft.com/en-us/library/hh231473.aspx)

Принимая во внимание то, что вы хотите, это PERCENTILE_DISC (DI SC = дискретный)

Для данного значения процентиля P, PERCENTILE_DISC сортирует значения выражения в предложении ORDER BY и возвращает значение с наименьшим значением CUME_DIST (в отношении той же спецификации сортировки), которое больше или равно равный P. Например, PERCENTILE_DISC (0.5) будет вычислять 50-й процентиль (то есть медиану) выражения.

(http://msdn.microsoft.com/en-us/library/hh231327.aspx)

+0

Я просто добавил DISC, где CONT, и дал мне те же результаты. – QuestionQuestion

+0

Как удалить сумму (sr.price) без возникновения ошибки агрегатной функции? – QuestionQuestion