您的位置:程序门 -> vb -> 基础类



急急急...求助加条件的分数段统计


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


急急急...求助加条件的分数段统计[已结贴,结贴人:sckdgzcs]
发表于:2007-05-03 14:35:35 楼主
在vb里面,数据库我用的是access。我的数据库里面有系别,年级,专业,班级,分数这几个字段,现在我想分别以系别,年级,专业,班级统计分数。每10分一个分数段即就是分成0-10,10-20,20-30...90-100统计的结果就显示在相应的字段内即0-10这个分数段就显示统计的0-10的结果,以此...。
我试图用select  
[0-20]=sum(case   when   分数   between   0   and   20   then   1   else   0   end),
[21-30]=sum(case   when   分数   between   21   and   30   then   1   else   0   end),
[31-40]=sum(case   when   分数   between   31   and   40   then   1   else   0   end),
[41-50]=sum(case   when   分数   between   41   and   50   then   1   else   0   end)
from   pth
group   by   班级,专业
但是通不过。
请大侠用vb给以帮助。

发表于:2007-05-03 15:04:171楼 得分:2
貌似   case   是   sql   server   的语法,   access   不支持。
发表于:2007-05-03 15:27:222楼 得分:2
select  
sum(case   when   分数   between   0   and   20   then   1   else   0   end)   as   [0-20],
sum(case   when   分数   between   21   and   30   then   1   else   0   end)   as   [21-30],
sum(case   when   分数   between   31   and   40   then   1   else   0   end)   as   [31-40],
sum(case   when   分数   between   41   and   50   then   1   else   0   end)   as   [41-50]
from   pth
group   by   班级,专业
发表于:2007-05-03 16:07:073楼 得分:2
access不支持case语句
发表于:2007-05-03 16:07:464楼 得分:10
http://ewbi.blogs.com/develops/2006/02/adding_case_to_.html

可能有帮助
发表于:2007-05-04 23:35:255楼 得分:10
select   count(*)   from   pth   where   分数   <=$下限   and   分数   > $上限
多次执行就行了
发表于:2007-05-08 11:23:256楼 得分:0
有没有写这种类型统计的?支点招三.
fordfamily你说的反复用select不行.因为要在一个表格控件中显示的吗!
union这个关键字到支持呢可是显示的字段数又是固定的?
请大侠们多支点招.谢谢.
我的qq:258559551
发表于:2007-05-08 11:49:007楼 得分:14
我有办法,但楼主没有说清楚,请把数据库表pth的完整结构写出来,并且说清楚想用哪些字段进行分组.

发表于:2007-05-08 15:06:078楼 得分:0
pth表的字段较多(主要字段有学号、姓名、系别、班级、系别、专业、分数、等级等等,其中只有分数这个字段是数值型的,其他字段都是文本的.我想分组的字段有班级、系别.
希望“滨海”给点帮助。
发表于:2007-05-08 15:26:059楼 得分:10
select   a.ssum   as   a20,b.ssum   as   a30,c.ssum   as   a40,d.ssum   as   a50   from   (select   count(*)   from   pth   where   分数 <=20   and   分数> 0)   a,(select   count(*)   from   pth   where   分数 <=30   and   分数> 20)   b....
发表于:2007-05-08 15:34:3210楼 得分:50
access   可以用iif,如下试试:

select  
    sum(iif(分数   between   0   and   20,1,0))   as   [0-20],
    ......
from   pth
group   by   班级,专业
发表于:2007-05-08 15:37:0511楼 得分:0
发表于:2007-05-08 15:40:2312楼 得分:0
我刚在access中试了"家人"的办法还很好.我还没有到vb中试.试了我再撤回销
发表于:2007-05-09 17:03:1713楼 得分:0
private   sub   command1_click()
    dim   sql   as   string
    sql   =   "select   系别,年级,专业,班级 "   _
        &   ",sum(iif(分数   between   0   and   20,1,0))   as   [0-20] "   _
        &   ",sum(iif(分数   between   21   and   30,1,0))   as   [21-30] "   _
        &   ",sum(iif(分数   between   31   and   40,1,0))   as   [31-40] "   _
        &   ",sum(iif(分数   between   41   and   50,1,0))   as   [41-50] "   _
        &   ",sum(iif(分数   between   51   and   60,1,0))   as   [51-60] "   _
        &   ",sum(iif(分数   between   61   and   70,1,0))   as   [61-70] "   _
        &   ",sum(iif(分数   between   71   and   80,1,0))   as   [71-80] "   _
        &   ",sum(iif(分数   between   81   and   90,1,0))   as   [81-90] "   _
        &   ",sum(iif(分数   between   91   and   100,1,0))   as   [91-100] "   _
        &   "from   pth   group   by   系别,年级,专业,班级 "
    set   datagrid1.datasource   =   nothing
    adodc1.recordsource   =   sql
    set   datagrid1.datasource   =   adodc1
    datagrid1.refresh
end   sub
发表于:2007-05-10 11:00:3414楼 得分:0
非常感谢 "海滨 "你这个方法肯定行的通.因为"家人 "说的也是这个方法.且我也用这个方法于5月8日解决了问题.这里仍然非常感谢两位的帮助.我于5月8日已经结贴,没办法给 "海滨 "你给分了,真对不起哈.


快速检索

最新资讯
热门点击