VB中读取access中的下列数据,注意是读取,然后按照分数段统计人数后,显示出来,由于是初学者很多不懂,希望能详细提供代码和说明,200分解决该有关问题,多谢啦

VB中读取access中的下列数据,注意是读取,然后按照分数段统计人数后,显示出来,由于是菜鸟很多不懂,希望能详细提供代码和说明,200分解决该问题,谢谢啦
我用的是ADO

学号 姓名 英语 数学 物理 化学 VB 
200235882 张一山 81 75 63 58 87 
200235883 张二山 81 75 63 58 87 
200235882 张撒山 81 75 63 58 87 
200235893 李的斯 71 87 73 78 97 
200236004 王永民 91 58 83 88 67 
200236016 * 87 79 93 98 77 
200236088 胡萝卜 51 95 69 76 37 
200236099 赵来财 61 77 77 87 89 
200236113 钱广 78 56 57 76 81 
200236124 孙悟空 88 68 89 66 67 
200236132 周全 21 75 73 87 57 
200236152 吴大庆 96 85 93 67 17 
200236182 赵无财 61 77 77 87 89 
200235883 张说山 81 75 63 58 87 
200235883 张的山 81 75 63 58 87 
200235883 张飞山 81 75 63 58 87 
200235891 李斯 71 87 73 78 97 
200236000 王永民 91 58 83 88 67 
200236010 * 87 79 93 98 77 
200236088 胡萝卜 51 95 69 45 37 
200236099 赵来财 61 77 77 87 89 
200236115 钱广 78 56 57 76 81 
200236125 孙悟空 88 68 89 66 67 
200236134 周全 21 75 73 87 57 
200236152 吴大庆 96 85 93 67 17 
200236181 赵无财 61 77 77 87 89 
统计出分数段范围人数 
范围 英语 数学 物理 化学 VB 
>=90 3 5 ....... 
80-90 10 12 ...... 
.... 
.... 
<60 .... .... .... 

然后就是算出每个人的加权平均分,进行排名~~~ 
谢谢各位大侠了~~我菜鸟在线等 


------解决方案--------------------
帮你顶
------解决方案--------------------
1. 参考 我的读取access数据库的例子
2. 想一个sql写出来很困难,先给你一个参考,可能有点小问题
select a.*,b.*,c.*,d.*,e.*
from (select left(英语,1) + '0' as 英语,count(*) as times from aa group by left(英语,1) + '0') as a,
(select left(数学,1) + '0' as 数学,count(*) as times from aa group by left(数学,1) + '0') as b,
(select left(物理,1) + '0' as 物理,count(*) as times from aa group by left(物理,1) + '0') as c,
(select left(化学,1) + '0' as 化学,count(*) as times from aa group by left(化学,1) + '0') as d,
(select left(vb,1) + '0' as vb,count(*) as times from aa group by left(vb,1) + '0') as e
where a.英语=b.数学 and a.英语=c.物理 and a.英语=d.化学 and a.英语=e.vb

------解决方案--------------------
不要急于用一个语句搞定~~
我的办法是把数据检索出来后再处理~~
1,把数据检索出来
2,放到一个MSHFlexGrid里,然后在MSHFlexGrid里多加一列--【平均分】
3,用一个循环,计算这一列的值,MSHFlexGrid 有排序的方法~~调用即可
参考代码:
VB code

With MSHFlexGrid1
    .Cols = 7
    .Col = 6
    .Row = 0
    .Text = "平均"
    For I = 1 To MSHFlexGrid1.Rows - 1
        .Col = 6
        .Row = I
        .Text = (CLng(IIf(.TextMatrix(I, 4) = "", 0, .TextMatrix(I, 4))) + CLng(IIf(.TextMatrix(I, 5) = "", 0, .TextMatrix(I, 4)))) * 0.5
    Next
End With

------解决方案--------------------
http://download.csdn.net/source/1498324
------解决方案--------------------
你的问题分2个sql完成:
1.一个统计分数段人数
select a.*,b.*,c.*,d.*,e.*
from (select left(英语,1) + '0' as 英语,count(*) as times1 from 成绩单 where 英语>=60 group by left(英语,1) + '0'
union select '0-59' as 英语,count(*) as times from 成绩单 where 英语<60 ) as a,
(select left(数学,1) + '0' as 数学,count(*) as times2 from 成绩单 where 数学>=60 group by left(数学,1) + '0'
union select '0-59' as 数学,count(*) as times from 成绩单 where 数学<60 ) as b,