Re: [请益] 怎样取得每日成绩的前三名名单

楼主: shadowjohn (转角遇到爱)   2014-08-12 00:44:30
※ 引述《jami520 (我的生命因你而发光)》之铭言:
: 目前有个资料表是储存学生每天的成绩单 db1
: (资料表字段 name, score, gdate)
: 我想取出每天前三名的学生姓名以及利用每天分数作排序,不晓得该怎样撰写mysql呢
: EX:
: gdate score name
: 8/11 96 小明
: 8/11 85 小王
: 8/11 73 小陈
: 8/10 88 小黄
: 8/10 86 小明
: 8/10 81 小忠
: 8/9 93 小王
: 8/9 91 小明
: 8/9 88 小黄
: .......
select rank,gdate,score,name from (
SELECT
@rank:=if(@prev!=gdate,1,@rank:=@rank+1) as rank,
@prev:=if(@prev!=gdate,gdate,@prev) as prev,
gdate, score, name
FROM
getmon3 as a,
(
select
@prev:='',
@rank:=0
) as b
ORDER BY gdate desc, score DESC
) as a
where rank <= 3
得到结果如下:
rank gdate score name
1 2014-08-11 100 小山
2 2014-08-11 99 小绿
3 2014-08-11 96 小陈
1 2014-08-10 99 小山
2 2014-08-10 77 小金
3 2014-08-10 60 小詹
1 2014-08-09 101 查克罗礼士
2 2014-08-09 16 统神
1 2014-08-08 87 小八
2 2014-08-08 73 小三
3 2014-08-08 66 小六
1 2014-08-07 69 阿金
不知道是不是你要的~
以下是原内容...
gdate 日期 score 分数 name 姓名
2014-08-11 96 小陈
2014-08-11 99 小绿
2014-08-11 85 阿九
2014-08-11 96 小明
2014-08-11 85 小王
2014-08-11 73 小陈
2014-08-11 69 小张
2014-08-11 100 小山
2014-08-10 99 小山
2014-08-10 60 小詹
2014-08-10 77 小金
2014-08-09 16 统神
2014-08-09 101 查克罗礼士
2014-08-08 73 小三
2014-08-08 66 小六
2014-08-08 87 小八
2014-08-07 69 阿金
楼主: shadowjohn (转角遇到爱)   2014-08-12 00:51:00
如果要考虑同分同排名,加一下 group_concat 吧~:)
作者: onininon (万)   2014-08-12 11:43:00
统神16分!!
作者: crossdunk (推嘘自如)   2014-08-12 12:08:00
罗礼士才101 你完蛋了你
楼主: shadowjohn (转角遇到爱)   2014-08-12 12:59:00
糟 查克在我背后 @!%^%&%*^(&*&()234@$@$ASFSGXB
作者: MOONRAKER (㊣牛鹤鳗毛人)   2014-08-12 16:46:00
你找不到查克的!他会来找你&*%$...
作者: jami520 (我的生命因你而发光)   2014-08-12 17:45:00
感谢,是我要的,真是专业!
作者: oread168 (大地的精靈R)   2014-08-13 21:57:00
发现野生onininon
楼主: shadowjohn (转角遇到爱)   2014-08-13 23:14:00
野生的 onininon~!
作者: nvizero (victor.st)   2014-08-18 10:47:00
感觉有点像作业....

Links booklink

Contact Us: admin [ a t ] ucptt.com