主题:请问,怎么挑出每个班级总分前50名的纪录呢?
coffeenight
[专家分:230] 发布于 2008-08-28 20:50:00
现有一自由表,结构如下
班级,学号,姓名,总分
请问怎么挑出每个班级总分前50名的学生呢?
评分感谢回复!
最后更新于:2008-09-02 21:55:00
回复列表 (共20个回复)
沙发
coffeenight [专家分:230] 发布于 2008-08-29 00:31:00
补充:共有10个班级
板凳
时光倒流 [专家分:660] 发布于 2008-08-29 08:50:00
use 成绩表
index on 成绩 tag cj
sele * from 成绩表 where RECCOUNT()<=50
3 楼
qjbzjp [专家分:8830] 发布于 2008-08-29 09:53:00
USE 成绩表名
sele * from student where .t. TOP 50 Order By 总分 DESC
4 楼
cbl518 [专家分:57140] 发布于 2008-08-29 10:50:00
楼主是需要每个,班级总分前50名。
5 楼
coffeenight [专家分:230] 发布于 2008-08-29 11:12:00
嗯,需要的是 每个 班级的前50名
目前只知道的方法是,分别 10 次查询,最后再 UNION --!
这个方法实在是 --!
等待其它更好的方法
谢谢楼上朋友回复!
6 楼
ihorse [专家分:970] 发布于 2008-08-30 20:43:00
放入循环中,10次之后,就有了10个班的前50名
7 楼
coffeenight [专家分:230] 发布于 2008-09-01 13:50:00
楼上的朋友,能说的具体点吗?
8 楼
cbl518 [专家分:57140] 发布于 2008-09-01 14:17:00
SELECT 班级 FROM 自由表 GROUP BY 1 INTO ARRAY aG班级
SELECT TOP 50 * FROM 自由表 WHERE 班级=aG班级[1,1] INTO TABLE 班级50
FOR i=2 TO ALEN(aG班级,1)
INSERT INTO 班级50 SELECT TOP 50 * FROM 自由表 WHERE 班级=aG班级[i,1]
ENDFOR
9 楼
farwish [专家分:270] 发布于 2008-09-01 16:30:00
一个语句可能无法实现:
1 首先生成一个相同的空表(另外取名),另外筛选出有多少个班级,存放到数组中;
2 按照班级分类SELECT 出每班级的前50名总分高,然后依次追加到先前的生成的表中.
3 生成的表就是每班总分前50的数据,报表按照班级分类和总分排序,完成
10 楼
farwish [专家分:270] 发布于 2008-09-01 16:35:00
模拟数据
成绩表:
班级 学号 姓名 总分
01 0101 A 100
03 0301 B 97
01 0102 .. ..
02 0201 .. ..
03 0302 .. ..
05 0501 .. ..
02 0202 .. ..
.
..
...
10 1089 .. 65
09 0976 .. 94
我来回复