我认为这件事不要从学生表中已得的分数着手,可以从既定的满分考虑,每10分往下减。每一档用一个select-sql语句,然后用UNION子句串联成最后的结果。
比如:满分是50分,可以这样写代码(假设表文件名为T1.DBF):
SELECT 学校编码, "Score41-50" AS 总分范围, COUNT(学校编码) AS 人数 FROM T1 WHERE 总分 BETWEEN 41 TO 50 GROUP BY 学校编码, 总分范围;
UNION ALL ;
SELECT 学校编码, "Score31-40" AS 总分范围, COUNT(学校编码) FROM T1 WHERE 总分 BETWEEN 31 TO 40 GROUP BY 学校编码, 总分范围;
UNION ALL ;
SELECT 学校编码, "Score21-30" AS 总分范围, COUNT(学校编码) FROM T1 WHERE 总分 BETWEEN 21 TO 30 GROUP BY 学校编码, 总分范围;
UNION ALL ;
SELECT 学校编码, "Score11-20" AS 总分范围, COUNT(学校编码) FROM T1 WHERE 总分 BETWEEN 11 TO 20 GROUP BY 学校编码, 总分范围;
UNION ALL ;
SELECT 学校编码, "Score_0-10" AS 总分范围, COUNT(学校编码) FROM T1 WHERE 总分 BETWEEN 0 TO 10 GROUP BY 学校编码, 总分范围
虽然代码看上去比较冗长,但条理比较清晰,而且代码也无需套用繁杂的函数。这段代码因为没有数据,所以是即兴写成,没有调试,不知道可否顺利执行,你可以参考一下。
[
本帖最后由 taifu945 于 2012-11-27 08:38 编辑 ]