解法: http://sqlfiddle.com/#!3/48f5a/13
裡面有用到 mssql:
1. 排名的技巧: dense_rank() over (partition by ... order by ...)
2. count condition 的技巧
可能板上以後也會有人有需要用到
※ 引述《kajm (kajm)》之銘言:
: 各位前輩好,
: 最近碰到一個需求,要用SQL取得某一個使用者在各事件中排名前五的次數。
: 我想法是先取得某一次事件的前五:
: SELECT TOP 5 log.Score, log.UserId
: FROM Events e, EventLog log
: WHERE e.EventNo = log.EventNo
: AND e.EventNo = 1
: ORDER BY log.Score DESC;
: Events這張表是紀錄有哪些事件
: EventLog則是紀錄某事件裡每個人的分數
: 雖然上面的SQL可以順利取出事件1裡面的前五名,
: 可是要改成取出所有事件的前五名就卡住了…
: 有稍微試過用GROUP BY搭配子查詢,可是都會卡住 囧
: 只好上來求助各位前輩><,希望能給點方向 感謝!