*假设有这个表
CREATE CURSOR 学生成绩 (年级 c(20),班级 c(20),学号 c(10),姓名 c(10),科目 c(20),成绩 n(10,2))
*求出各年级10%的人数
SELECT 年级,INT(COUNT(*)*0.1) 百分10人数
FROM 学生成绩 INTO CURSOR 各年级总人数 GROUP BY 年级
*对各科成绩预排序(注意:没考虑处理同分情况,若需要即要另外处理)
SELECT *,RECNO() 序号 from 学生成绩 INTO CURSOR 学生各科成绩排序 READWRITE
ORDER BY 年级,科目,成绩 DESC
*对各科从1开始排序
REPLACE ALL 序号 WITH RECNO() IN 学生各科成绩排序
SELECT 年级,科目,MIN(序号) 最小序号 FROM 学生各科成绩排序 INTO CURSOR 求各科序号临时表 GROUP BY 年级,科目
UPDATE 学生各科成绩排序 SET 序号=序号-b.最小序号+1 from 求各科序号临时表 b WHERE 学生各科成绩排序.年级=b.年级 AND 学生各科成绩排序.科目=b.科目
*求出一个班各科在年级前10%各有多少人
SELECT a.年级,a.班级,a.科目,COUNT(*) 年级前10%人数 FROM 学生各科成绩排序 a,各年级总人数 b INTO CURSOR 班各科年级前10%人数 WHERE a.年级=b.年级 AND a.序号<=b.百分10人数 GROUP BY a.年级,a.班级,a.科目