以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  后台统计中如何计算及格率?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=67641)

--  作者:kgdce
--  发布时间:2015/4/28 11:25:00
--  后台统计中如何计算及格率?

            Dim sg As New SQLGroupTableBuilder("算学校1",“A校”)
            sg.C
            sg.Groups.AddDef("xx") \'根据学校分组
            sg.Totals.AddDef("zf",AggregateEnum.Count)

            sg.Totals.AddDef("zf",AggregateEnum.Max)

            sg.totals.AddDef("zf",AggregateEnum.Average)
            sg.Build \'生成统计表

如上,想计算及格率。分数(zf)大于等于60为及格,如何写统计的表达式列计算出用格率?


--  作者:Bin
--  发布时间:2015/4/28 11:27:00
--  
http://www.foxtable.com/help/topics/1428.htm

datatables("算学校1").datacols.add("及格率",Gettype(string),"IIF(zf>60,\'及格\',\'不及格\')")

--  作者:kgdce
--  发布时间:2015/4/28 11:38:00
--  
bin 理解错误,是计算后台数据库表中,总分一列中及格的人数,然后计算出及格率(及格的人数/统计的记录数AggregateEnum.Count)?不是计算已经生成的表("算学校1")中总分是否及格。
--  作者:Bin
--  发布时间:2015/4/28 11:40:00
--  
ACCESS数据源的话.表达式还是这么些.SQL数据源要用 case when 得整个表用SQL语句实现
--  作者:狐狸爸爸
--  发布时间:2015/4/28 11:41:00
--  

  sg.Totals.AddExp("及格人数",“iif(分 数 >= 60,1,0)”)

  sg.Totals.AddExp("不及格数",“iif(分 数 < 60,1,0)”)


--  作者:kgdce
--  发布时间:2015/4/28 12:07:00
--  
            sg.C
            sg.Groups.AddDef("xx") \'根据学校分组
            sg.Totals.AddDef("zf",AggregateEnum.Count,"人数","人数") \'根据学校分组
            sg.Totals.AddDef("zf",AggregateEnum.Max,"最高分","最高分") \'根据学校分组
            sg.totals.AddDef("zf",AggregateEnum.Average,"平均分","平均分") \'根据学校分组
            sg.Totals.AddExp("及格人数","iif(zf >= 60,1,0)")  适合access数据源 如何改成sql数据源的?
            sg.Build \'生成统计表 

--  作者:Bin
--  发布时间:2015/4/28 12:08:00
--  
看4楼 SQL数据源要用 Case when




--  作者:kgdce
--  发布时间:2015/4/28 13:02:00
--  
用case when 问题解决,谢谢!