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