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


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

主题:统计

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


加好友 发短信
等级:八尾狐 帖子:1936 积分:14844 威望:0 精华:0 注册:2016/4/28 9:58:00
  发帖心情 Post By:2017/2/21 11:52:00 [只看该作者]

你这个安逸

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


加好友 发短信
等级:超级版主 帖子:106129 积分:539756 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/2/21 12:07:00 [只看该作者]

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

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


加好友 发短信
等级:八尾狐 帖子:1936 积分:14844 威望:0 精华:0 注册:2016/4/28 9:58:00
  发帖心情 Post By:2017/2/21 14:06:00 [只看该作者]

Dim cm1 As String = e.Form.Controls("combobox1").text
Dim year As Integer = cm1.Substring(0,4)
Dim ji As String = cm1.Substring(4,1)
Dim j As Integer
If ji = "春"
    j = 0
End If
If ji = "秋"
    j = 1
End If
year = year + j
Dim nj As String = "'初中2014级','小学2011级'" '排除的年级
Dim sql As String = " Se lect *,floor(试卷数/30) As 大,Ceiling((试卷数 % 30)/5) As 小 from (Se  lect a1.*,b.班数,(人数 + 班数 * 2) As 试卷数 from "
sql += " (Sele ct 学校名称,年级,Count(学生姓名) As 人数 from 学生信息 where 年级 not in(" & nj & ") group by 学校名称,年级) As a1 Inner join "
sql += " (Sele ct 学校名称,年级,Count(班级) As 班数 from (Sele  ct 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.Connectio  nName = "180.153.108.50"
cmd.CommandText = sql
Dim dt1 As Table = e.Form.Controls("Table1").Table
dt1.DataSource= cmd.ExecuteReader


老师,我是想用红色部分得出年,然后用这个year去排除征订试卷时不统计的年级,业务上是小学是year -小学级>6,初中是year-初中级>3,如2017年秋时=2018,则要排除掉小学已毕业的小学2011级和初中已毕业的2014级,接下来的sql不晓得怎么整,请老师帮忙,谢谢

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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/2/21 14:37:00 [只看该作者]

这个意思?

 

Dim cm1 As String = e.Form.Controls("combobox1").text
Dim year As Integer = cm1.Substring(0,4)
Dim ji As String = cm1.Substring(4,1)
Dim j As Integer
If ji = "春"
    j = 0
End If
If ji = "秋"
    j = 1
End If
year = year + j


Dim nj As String = "'初中" & year-4 & "级','小学" & year-7 & "级'" '排除的年级
msgbox(nj)
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


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


加好友 发短信
等级:八尾狐 帖子:1936 积分:14844 威望:0 精华:0 注册:2016/4/28 9:58:00
  发帖心情 Post By:2017/2/21 14:48:00 [只看该作者]

老师,你这样还是只排除了那么一级的,因为学生信息表中各级学生以后可能一至存在,我是要排除所有毕了业的学生,如到2018年时初中应排除2014级及以前的所有(含排除2013,2012等),小学要排除2011以前的所有

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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/2/21 15:01:00 [只看该作者]

Dim cm1 As String = e.Form.Controls("combobox1").text
Dim year As Integer = cm1.Substring(0,4)
Dim ji As String = cm1.Substring(4,1)
Dim j As Integer
If ji = "春"
    j = 0
End If
If ji = "秋"
    j = 1
End If
year = year + j

Dim nj As String = ""
For i As Integer = year-3 To year
    nj &= "'初中" & i & "级',"
Next
For i As Integer = year-6 To year
    nj &= "'小学" & i & "级',"
Next

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 年级 in(" & nj.trim(",") & ") group by 学校名称,年级) As a1 Inner join "
sql += " (Select 学校名称,年级,Count(班级) As 班数 from (Select distinct 学校名称,年级,班级 from 学生信息 where 年级 in(" & nj.trim(",") & ")) 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


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


加好友 发短信
等级:八尾狐 帖子:1936 积分:14844 威望:0 精华:0 注册:2016/4/28 9:58:00
  发帖心情 Post By:2017/2/21 15:43:00 [只看该作者]

谢谢老师,目前问题解决了,看来sql太好了,效率快多了,还有问题再请教您

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


加好友 发短信
等级:八尾狐 帖子:1936 积分:14844 威望:0 精华:0 注册:2016/4/28 9:58:00
  发帖心情 Post By:2017/2/21 16:16:00 [只看该作者]

Dim sql As String = " Se lect *,floor(试卷预订数/30) As 大袋,Ceiling((试卷预订数 % 30)/5) As 小袋,(大袋*30+小袋*5) as 试卷征订数,from (Sel ect a1.*,b.班数,(人数 + 班数 * 2) As 试卷预订数 from "
sql += " (Sel ect 学校名称,年级,Count(学生姓名) As 人数 from 学生信息 where 年级 in(" & nj.trim(",") & ") and left(状态,2) ='在读' group by 学校名称,年级) As a1 Inner join "
sql += " (Sele ct 学校名称,年级,Count(班级) As 班数 from (Se lect distinct 学校名称,年级,班级 from 学生信息 where 年级 in(" & nj.trim(",") & ")) As a group by a.学校名称,a.年级) As b "
sql += " on a1.学校名称 = b.学校名称  And a1.年级 = b.年级) As c"
老师我想在表中依照改来再加一列试卷征订数 计算用大袋*30+小袋*5,这样改不对,请怎么改

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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/2/21 16:30:00 [只看该作者]

不能直接引用,你要这样写

 

(floor(试卷数/30)*30+Ceiling((试卷数 % 30)/5)*5) as 试卷征订数


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


加好友 发短信
等级:八尾狐 帖子:1936 积分:14844 威望:0 精华:0 注册:2016/4/28 9:58:00
  发帖心情 Post By:2017/2/21 18:07:00 [只看该作者]

老师,我现在才发现Ceiling取出来的整数不是按进一法取的。我的业务逻辑是如试卷数41,则大袋取1,小袋取3才行,也就是只要余数不为0均要多取一袋,请问该用什么函数 

 回到顶部
总数 23 上一页 1 2 3 下一页