查询每位学生的各科成绩,总成绩,以及排名
Student(S#,Sname,Sage,Ssex) 学生表
Course(C#,Cname,T#) 课程表
SC(S#,C#,score) 成绩表
如何查询每位学生的各科成绩,总成绩,以及排名
[解决办法]
作业吧
create table Student(S# varchar(10),Sname varchar(10),Sage int,Ssex char(2))
create table Course(C# varchar(10),Cname varchar(10),T# varchar(10))
create table SC(S# varchar(10),C# varchar(10),score int)
insert into Student values ('S001','张三',15,'男')
insert into Student values ('S002','李四',16,'女')
insert into Student values ('S003','王五',15,'男')
insert into Student values ('S004','赵六',14,'女')
insert into Course values ('M','数学','T001')
insert into Course values ('C','语文','T002')
insert into SC values ('S001','M',78)
insert into SC values ('S001','C',98)
insert into SC values ('S002','M',98)
insert into SC values ('S002','C',79)
insert into SC values ('S003','M',67)
insert into SC values ('S003','C',89)
insert into SC values ('S004','M',66)
insert into SC values ('S004','C',88)
select T2.*,T1.* from
(
select A.S#,SUM(B.score) as 总分,Rank() over (order by sum(B.score) desc) as 总分排名
from Student A inner join SC B on A.S#=B.S# inner join Course C on B.C#=C.C#
group by A.S#
) T1,
(
select A.S#,A.Sname,C.Cname,B.score
from Student A inner join SC B on A.S#=B.S# inner join Course C on B.C#=C.C#
)T2
where T1.S#=T2.S# order by T1.总分 desc
S# Sname Cname score S# 总分 总分排名
---------- ---------- ---------- ----------- ---------- ----------- --------------------
S002 李四 数学 98 S002 177 1
S002 李四 语文 79 S002 177 1
S001 张三 数学 78 S001 176 2
S001 张三 语文 98 S001 176 2
S003 王五 数学 67 S003 156 3
S003 王五 语文 89 S003 156 3
S004 赵六 数学 66 S004 154 4
S004 赵六 语文 88 S004 154 4
(8 行受影响)
[解决办法]
http://blog.csdn.net/maco_wang/article/details/6281484