2014-10-30 5 views
0

중간 비용을 표시하는 ssrs 2012 내에 열을 생성하려고합니다.데이터 세트의 중앙값을 올바르게 계산합니까?

나는 이것을 잠시 동안 조사해 왔으며 이것을 시도하고 달성하기 위해 PERCENTILE_CONT 쿼리를 작성했습니다.

나는 쿼리를 사용하고 있습니다 : If you look at the very last row, you'll notice the avgcost is $46, and the cost median is $46.25

이가 중간입니다 :

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 

내가 보고서를 실행하면, 이러한 결과는? 왜 다른 모든 원주민과 중세 인은 같은가? PERCENTILE_CONT (.5)를 PERCENTILE_CONT (.9)로 변경하면 중앙값 열에 변경 사항이 없습니다. 이는 중간 값에 대한 잘못된 값이라고 생각합니다. (

+0

아마도 sr.price에 의해 ORDER과 합계 (sr.price)에 의해 ORDER를 교체? – Arvo

+0

나는 그것을 시도하고 내가했을 때, 그것은 "sr.price는 집계 함수 또는 GROUP BY 절에 포함되어 있지 않습니다." – QuestionQuestion

답변

1

PERCENTILE_CONT =) 연속

은 SQL 서버의 열 값의 연속적인 분포에 기초하여 백분율을 계산한다. 그 결과는 보간 및 열에있는 고유 값 중 하나와 동일하지 않을 수도있다.

(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

CONT가있는 곳에 DISC를 추가하면 동일한 결과가 나타납니다. – QuestionQuestion

+0

집계 함수 오류를 발생시키지 않고 합계 (sr.price)를 제거하려면 어떻게합니까? – QuestionQuestion

관련 문제