以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  CaseStudy目录下的文件:等级划分.Table  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=116978)

--  作者:huhu
--  发布时间:2018/4/3 17:46:00
--  CaseStudy目录下的文件:等级划分.Table

示例二

下面的示例可以参考CaseStudy目录下的文件:等级划分.Table

假定有一个表,有分数和等级两列,
要根据分数从高到低进行等级划分,其中A等占10%,B等占25%,C等占40%,D等占20%,E等占5%。

代码为:

Dim vals() As Double = {0.1,0.35,0.75,0.95}------不是很清楚这个数组是怎么个意思?请帮忙说明一下这个例子。
Dim
cnt As Integer = DataTables("表A").DataRows.Count \'得到总行数
Dim
drs As List (of DataRow) = DataTables("表A").Select("", "分数 Desc") \'得到按分数高低排列的行的集合.
For
i As Integer = 0 To drs.Count - 1
    Dim v As Double  = i /cnt 
\'
计算位置比例
    If v > vals(3) Then
        drs(i)(
"
等级") = "E"
    ElseIf v > vals(2) Then
        drs(i)(
"
等级") = "D"
    ElseIf v > vals(1) Then
        drs(i)(
"
等级") = "C"
    ElseIf v > vals(0) Then
        drs(i)(
"
等级") = "B"
   
Else
        drs(i)("等级") = "A"
    End
If


--  作者:有点甜
--  发布时间:2018/4/3 17:53:00
--  

首先,select的时候,根据分数从高到低排序了数据。

 

然后,加入有100个学生,那么 1-10 排名的,就是满足小于0.1 的比例; 10-35排名的,就是0.35也就是B等级 ......