我有一个开始日期和结束日期,我正在计算两者之间的工作日:
我创建了一个名为CountWeekDays的计算字段,它等于: Code.getBusinessDaysCount(字段!date_created.Value,字段!date_closed.Value)
我可以得到这样的平均值:= Avg(Fields!CountWeekDays.Value)
但是,我无法以同样的方式获得中位数。我怎样才能得到计算出来的中位数?
我用来获取工作日计数的代码如下:
Function getBusinessDaysCount(ByVal tFrom As Date, ByVal tTo As Date) As Integer
Dim tCount As Integer
Dim tProcessDate As Date = tFrom
For x as Integer= 1 To DateDiff(DateInterval.Day, tFrom, tTo) + 1
If Not (tProcessDate.DayOfWeek = DayOfWeek.Saturday Or tProcessDate.DayOfWeek = DayOfWeek.Sunday) Then
tCount = tCount + 1
End If
tProcessDate = DateAdd(DateInterval.Day, 1, tProcessDate)
Next
Return tCount
End Function
答案 0 :(得分:0)
我找到了中位数“
的代码'MEDIAN code
'code from http://stackoverflow.com/questions/1943437/mean-median-mode-in-sql-server-reporting-services
Dim values As New System.Collections.Generic.List(Of Integer)
Dim valueCounts As New System.Collections.Generic.Dictionary(Of Integer, Integer)
Function AddValue(newValue As Integer) As Integer
values.Add(newValue)
AddValue = newValue
If Not valueCounts.ContainsKey(newValue) Then
valueCounts.item(newValue) = 1
Else
valueCounts.item(newValue) += 1
End If
End Function
Function GetMedian() As Double
Dim count As Integer = values.Count
If count = 0 Then
Return 0
Else
values.Sort()
If count Mod 2 = 1 Then
Return values(CInt((count / 2) - 0.5))
Else
Dim index1 As Integer = count \ 2
Dim index2 As Integer = index1 - 1
Dim value1, value2 As Integer
value1 = values(index1)
value2 = values(index2)
Return (value1 + value2) / 2
End If
End If
End Function