1、需求是統(tǒng)計用戶答題的榜單,用戶答題的數(shù)據(jù)表存了用戶id,答題題目和答題時間,現(xiàn)在需要根據(jù)答題數(shù)和答題時間進行統(tǒng)計和得到排名。2、之前嘗試使用了以下方法進行統(tǒng)計
SET @counter=0;
select @counter:=@counter+1 AS rank,uid,count(*) answercount,sum(finishtime) timestampsum from huiyi_answer_record group by uid order by answercount DESC,timestampsum ASC limit 0,10;
然后發(fā)現(xiàn)排名只依賴第一個Order條件,當?shù)诙€條件導致順序改變的時候排名依舊沒有改變。3、問題1:請問應該怎么正確對統(tǒng)計后的數(shù)據(jù)進行排名(有分頁)?4、問題2:請問在每次分頁下,怎么能直接得到某個用戶的排名和數(shù)據(jù)?
5、補充測試結果。如圖,mysql返回的結果排序是正確的,但rank不對。
5 回答

紫衣仙女
TA貢獻1839條經(jīng)驗 獲得超15個贊
用子查詢
SET @counter=0;
select t2.* from (
select t1.*,@counter:=@counter+1 AS rank from (
select uid,count(*) answercount,sum(finishtime) timestampsum from huiyi_answer_record group by uid order by answercount DESC,timestampsum asc
) as t1
) as t2 limit 2,2;
# 或者
SET @counter=2; #查詢第二頁,假如每頁2條,起始值就是2
select t1.*,@counter:=@counter+1 AS rank from (
select uid,count(*) answercount,sum(finishtime) timestampsum from huiyi_answer_record group by uid order by answercount DESC,timestampsum asc
) as t1 limit 2,2

慕沐林林
TA貢獻2016條經(jīng)驗 獲得超9個贊
你是想對答題數(shù)目 和 時間 分別賦予不同權重么.
像你這種排序, 它是優(yōu)先第一位的
就好比
A B
20 5
19 9999
不管你B有多大, 你的A比別人小它永遠在后面
- 5 回答
- 0 關注
- 672 瀏覽
添加回答
舉報
0/150
提交
取消