回 帖 发 新 帖 刷新版面

主题:请问,怎么挑出每个班级总分前50名的纪录呢?

现有一自由表,结构如下
班级,学号,姓名,总分

请问怎么挑出每个班级总分前50名的学生呢?

评分感谢回复!

回复列表 (共20个回复)

沙发

补充:共有10个班级

板凳

use 成绩表
index on 成绩 tag cj
sele * from 成绩表 where RECCOUNT()<=50

3 楼

USE 成绩表名
sele * from student where .t. TOP 50 Order By 总分 DESC

4 楼

楼主是需要每个,班级总分前50名。

5 楼

嗯,需要的是 每个 班级的前50名
目前只知道的方法是,分别 10 次查询,最后再 UNION --!
这个方法实在是  --!
等待其它更好的方法

谢谢楼上朋友回复!

6 楼

放入循环中,10次之后,就有了10个班的前50名

7 楼

楼上的朋友,能说的具体点吗?

8 楼

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 楼

一个语句可能无法实现:
1 首先生成一个相同的空表(另外取名),另外筛选出有多少个班级,存放到数组中;
2 按照班级分类SELECT 出每班级的前50名总分高,然后依次追加到先前的生成的表中.
3 生成的表就是每班总分前50的数据,报表按照班级分类和总分排序,完成

10 楼

模拟数据
成绩表:
班级  学号  姓名  总分
01    0101   A     100
03    0301   B      97
01    0102   ..     ..
02    0201   ..     ..
03    0302   ..     ..
05    0501   ..     ..
02    0202   ..     ..
.
..
...
10    1089   ..     65
09    0976   ..     94

我来回复

您尚未登录,请登录后再回复。点此登录或注册