Foxtable(狐表)用户栏目专家坐堂 → 统计


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

主题:统计

帅哥,在线噢!
有点蓝
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110743 积分:563641 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/2/20 20:49:00 [显示全部帖子]

Dim g As New sqlGroupTableBuilder("统计表1","学生信息")
Dim dt1 As Table = Tables("试卷征订数_table1")
g.C
g.Groups.AddDef("学校名称")
g.Groups.AddDef("年级")
g.Totals.AddDef("学生姓名",AggregateEnum.Count,"人数")
g.Totals.AddDef("班级",AggregateEnum.Count,"班数")
dt1.DataSource = g.BuildDataSource()

dt1.DataTable.DataCols.Add("试卷数",Gettype(Double),"人数 + 班数 * 2")
dt1.DataTable.DataCols.Add("大",Gettype(Double))
dt1.DataTable.DataCols.Add("小",Gettype(Double))
For Each r As Row In dt1.Rows
    r("大") = Math.Floor(r("试卷数")/30)
    r("小") = Math.Ceiling((r("试卷数") Mod 30)/ 5)
Next


 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110743 积分:563641 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/2/20 22:05:00 [显示全部帖子]

用sql统计吧,自己到数据库测试,自己改改

Dim dt1 As Table = Tables("试卷征订数_table1")
Dim sql = "select a1.*,b.班数,(人数 + 班数 * 2) as 试卷数,floor(试卷数/30) as 大,Ceiling((试卷数 % 30)/5) from (Select 学校名称,年级,Count(学生姓名) As 人数 from 学生信息 group by 学校名称,年级) as a1 Inner join"
sql &= "(Select 学校名称,年级,Count(班级) As 班数 from (Select distinct 学校名称,年级,班级 from 学生信息) As a group by a.学校名称,a.年级) As b on a1.学校名称 = b.学校名称  And a1.年级 = b.年级 " 
Dim cmd As new SQLCommand
cmd.ConnectionName = "数据源"
cmd.CommandText = sql
dt1.DataSource= cmd.ExecuteReader

 回到顶部
帅哥,在线噢!
有点蓝
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110743 积分:563641 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/2/21 10:41:00 [显示全部帖子]


效率确实不高


上例子,给你改改sql

 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110743 积分:563641 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/2/21 11:24:00 [显示全部帖子]

Dim nj As String = "'初中2014级','小学2011级'" '排除的年级

Dim sql As String = " Select *,floor(试卷数/30) As 大,Ceiling((试卷数 % 30)/5) As 小 from (Select a1.*,b.班数,(人数 + 班数 * 2) As 试卷数 from "
sql += " (Select 学校名称,年级,Count(学生姓名) As 人数 from 学生信息 where 年级 not in(" & nj & ") group by 学校名称,年级) As a1 Inner join "
sql += " (Select 学校名称,年级,Count(班级) As 班数 from (Select distinct 学校名称,年级,班级 from 学生信息 where 年级 not in(" & nj & ")) As a group by a.学校名称,a.年级) As b "
sql += " on a1.学校名称 = b.学校名称  And a1.年级 = b.年级) As c"
 
Dim cmd As new SQLCommand
cmd.ConnectionName = "180.183.105.50"
cmd.CommandText = sql
Dim dt1 As Table = e.Form.Controls("Table1").Table
dt1.DataSource= cmd.ExecuteReader

 回到顶部
帅哥,在线噢!
有点蓝
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110743 积分:563641 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/2/21 12:07:00 [显示全部帖子]

自己进行计算,得出排除的年级不就行。至于怎么计算,业务的东西你懂,我不懂

 回到顶部
帅哥,在线噢!
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110743 积分:563641 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/2/21 19:56:00 [显示全部帖子]

在同一级别的se lect字段中,表达式的别名是无法被同级别的其它表达式使用的

 回到顶部