Foxtable(狐表)用户栏目专家坐堂 → 集合中取掉最大最小值后,计算平均值


  共有2719人关注过本帖树形打印复制链接

主题:集合中取掉最大最小值后,计算平均值

帅哥哟,离线,有人找我吗?
ZJZK2018
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:767 积分:6119 威望:0 精华:0 注册:2018/2/1 17:26:00
集合中取掉最大最小值后,计算平均值  发帖心情 Post By:2018/7/14 1:32:00 [显示全部帖子]

如题,

除了下面这段代码后,有没有其他更好的办法来处理?

Dim drs As List(Of DataRow)
Dim sum As Double
Dim avg As Double
drs = DataTables("开标记录").Select("[公司报价] > 0","公司报价 DESC")
drs.Remove(drs(0))
drs.Remove(drs(drs.Count -1))
For Each dr As DataRow In drs
    sum += dr("公司报价")
Next
avg = sum / drs.Count
Output.Show(avg)

 回到顶部
帅哥哟,离线,有人找我吗?
ZJZK2018
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:767 积分:6119 威望:0 精华:0 注册:2018/2/1 17:26:00
  发帖心情 Post By:2018/7/14 17:07:00 [显示全部帖子]

谢谢老师搞定:

            Dim mdrzg As DataRow = e.DataTable.Find("[项目编号] = '" & dr("项目编号") & "' And [优惠率_最高限价] <> 0 ","优惠率_最高限价 DESC")
            Dim ndrzg As DataRow = e.DataTable.Find("[项目编号] = '" & dr("项目编号") & "' And [优惠率_最高限价] <> 0 ","优惠率_最高限价")
            Dim cnt As Integer = e.DataTable.Compute("Count(优惠率_最高限价)","[项目编号] = '" & dr("项目编号") & "' And [优惠率_最高限价] <> 0")
            Dim fil As String = "[项目编号] = '" & dr("项目编号") & "' And [优惠率_最高限价] <> 0 And [_Identify] not In(" & mdrzg("_Identify") & "," & ndrzg("_Identify") & ")"
            If cnt > 0 Then
                If cnt > 3 Then
                    fdr("评标优惠率平均值_最高限价") = e.DataTable.Compute("Avg(优惠率_最高限价)",fil)
                Else
                    fdr("评标优惠率平均值_最高限价") = e.DataTable.Compute("Avg(优惠率_最高限价)","[项目编号] = '" & dr("项目编号") & "' And [优惠率_最高限价] <> 0")
                End If
            Else
                fdr("评标优惠率平均值_最高限价") = Nothing
            End If


 回到顶部