亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

mysql對數據統計后實現排名

mysql對數據統計后實現排名

PHP
皈依舞 2019-03-12 16:17:25
1、需求是統計用戶答題的榜單,用戶答題的數據表存了用戶id,答題題目和答題時間,現在需要根據答題數和答題時間進行統計和得到排名。2、之前嘗試使用了以下方法進行統計 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; 然后發現排名只依賴第一個Order條件,當第二個條件導致順序改變的時候排名依舊沒有改變。3、問題1:請問應該怎么正確對統計后的數據進行排名(有分頁)?4、問題2:請問在每次分頁下,怎么能直接得到某個用戶的排名和數據? 5、補充測試結果。如圖,mysql返回的結果排序是正確的,但rank不對。
查看完整描述

5 回答

?
紫衣仙女

TA貢獻1839條經驗 獲得超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
查看完整回答
反對 回復 2019-03-18
?
慕沐林林

TA貢獻2016條經驗 獲得超9個贊

你是想對答題數目 和 時間 分別賦予不同權重么.
像你這種排序, 它是優先第一位的
就好比

A    B
20   5
19   9999

不管你B有多大, 你的A比別人小它永遠在后面

查看完整回答
反對 回復 2019-03-18
?
嚕嚕噠

TA貢獻1784條經驗 獲得超7個贊

第二排序是當第一個排序的字段相同時才會生效

查看完整回答
反對 回復 2019-03-18
?
HUWWW

TA貢獻1874條經驗 獲得超12個贊

redis sorted set

查看完整回答
反對 回復 2019-03-18
  • 5 回答
  • 0 關注
  • 696 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號