1. 程式人生 > >MySQL的sum()函數

MySQL的sum()函數

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()函數