MySQL的sum()函數
阿新 • • 發佈:2018-02-11
order by 函數 遇到 pos campaign 註意 for mage 用戶
如下圖,這是一個關於用戶參加活動,每個活動會給這位用戶評分的一個表:
用戶1參加了A活動,評分100;
用戶2參加了B活動,評分98,又參加了D活動,評分10;
用戶3參加了C活動,評分99
需求:把以上四條數據按照每個用戶的 總分 降序排列
SQL:
SELECT SUM(score),user_id,campaign_id FROM 表名 GROUP BY (user_id) ORDER BY SUM(score) DESC ;
結果為:
完成需求,以下是實際應用遇到的小問題:
**Dao.xml :
需要註意:因為sum()是一個函數,所以取值時要用map接收,但是 我們這個需求是要降序的,map 又是無序的,用map接收豈不是做了無用功?不用擔心,在Dao裏我們再封裝一層:
**Dao.java :
把他用ArrayList來接收,Map做泛型,這樣就不怕它的順序變化了,順便貼一下實現類裏的取值方法:
**ServiceImpl . java :
foreach循環,但如果取sum(score)時,直接像上一行取contacts_id一樣 ,轉String類型運行是會報錯的,需要借助Integer來做轉換,這樣取到的值才是正確不會報異常的。
MySQL的sum()函數