求一sql,查询所有学生的成绩后,加上一条计算总成绩的记录。谢谢

来源:百度知道 编辑:UC知道 时间:2024/05/31 20:30:34
select stu_name,stu_score from studentinfo
我现在想再加入一条统计总分数的记录
怎么用一条sql解决?谢谢
先统计每个班的总成绩,在统计所有班的总成绩
谢谢

select stu_name,stu_score,sum(stu_score)总分
from studentinfo
group by rollup(stu_name,stu_score)

你看下ROLLUP函数 这个是ORACLE8。0后的分析函数!
它就是专门实现小计的 你要计算班级和全校总和,就在上例后边括号里加入就可以了,也就是说SELECT 后面出现的字段都要在ROLLUP()中加入,明白? 不过最好你还是自己试下这个 分析函数!

假如表里保存的数据如:
stu_name stu_score ...
张三 89 ...
张三 78 ...
李四 90 ...
王五 70 ...
王五 60 ...

select name sorce form
(
select stu_name name,stu_score score from studentinfo
union all
select stu_name name,sum(stu_score) score from studentinfo group by stu_name
) order by name

或者
select stu_name stu_score form
studentinfo,
(select stu_name ,sum(stu_score) stu_score from studentinfo group by stu_name)
order by name

使用DB2的GROUPING SETS来实现
CREATE TABLE studentinfo(
stu_name VARCHAR(10),
stu_score NUMERIC(5,1)
);
INSERT INTO studentinfo VALUES('1张二', 89);
INSERT INTO studentinfo VALUES('2张三', 7