SQL怎么取出每个科目前三名并按科目和分组排列
一个表B:学号姓名科目分数1张三语文802张三数学603李四英语904张华数学595刘民英语706张华语文807李四语文708刘民语文609张三英语5010李四数学80用...
一个表B:
学号
姓名
科目
分数
1
张三
语文
80
2
张三
数学
60
3
李四
英语
90
4
张华
数学
59
5
刘民
英语
70
6
张华
语文
80
7
李四
语文
70
8
刘民
语文
60
9
张三
英语
50
10
李四
数学
80
用SQL语句取出每个科目的前三名的记录(按照科目分组并按照分数排序,格式如下)
排名
姓名
科目
分数
1
XX
数学
90
2
XX
数学
89
3
XX
数学
88
1
XX
语文
90
2
XX
语文
89
3
XX
语文
88
1
XX
英语
90
2
XX
英语
89
3
XX
英语
88
…
表B如下:
用SQL语句取出每个科目的前三名的记录(按照科目分组并按照分数排序,格式如下)
结果格式如下: 展开
学号
姓名
科目
分数
1
张三
语文
80
2
张三
数学
60
3
李四
英语
90
4
张华
数学
59
5
刘民
英语
70
6
张华
语文
80
7
李四
语文
70
8
刘民
语文
60
9
张三
英语
50
10
李四
数学
80
用SQL语句取出每个科目的前三名的记录(按照科目分组并按照分数排序,格式如下)
排名
姓名
科目
分数
1
XX
数学
90
2
XX
数学
89
3
XX
数学
88
1
XX
语文
90
2
XX
语文
89
3
XX
语文
88
1
XX
英语
90
2
XX
英语
89
3
XX
英语
88
…
表B如下:
用SQL语句取出每个科目的前三名的记录(按照科目分组并按照分数排序,格式如下)
结果格式如下: 展开
4个回答
2014-03-04
展开全部
select BB.科目,BB.rk,BB.姓名,BB.分数
from (select B.*,
rank() over(partition by B.科目 order by B.分数 desc) rk
from B )BB
where BB.rk < 4;
oracle 10g 已经测试。
from (select B.*,
rank() over(partition by B.科目 order by B.分数 desc) rk
from B )BB
where BB.rk < 4;
oracle 10g 已经测试。
更多追问追答
追问
BB.rk是什么?
追答
一个表B:
学号
姓名
科目
分数
B 是表名,BB是结果集的别名,可以将BB视作一张表。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
SELECT RANK() OVER(PATRITION BY 科目 ORDER BY 分数) 排名,姓名,科目,分数
FROM B;
没做测试数据,不好使再问我吧。
数据库用的oracle 11g
FROM B;
没做测试数据,不好使再问我吧。
数据库用的oracle 11g
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
select * from B order by 科目 desc, 分数 desc
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
select B1.姓名,B1.科目,B1.分数 from B B1 where(select count(1) from B where 科目=B1.科目 and 分数〉=B1.分数)〈=3 order by B1.科目,B1.分数;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询