MySQL的sum()函数

Posted 唐末萧声

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL的sum()函数相关的知识,希望对你有一定的参考价值。

如下图,这是一个关于用户参加活动,每个活动会给这位用户评分的一个表:

用户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()函数的主要内容,如果未能解决你的问题,请参考以下文章

Mysql函数错误到SUM [重复]

如何使“SUM(amount) over”窗口函数在 MySQL 5.7 中工作?

MySQL聚合函数

MySQL 聚合函数初探

MySQL - SUM() OVER() 函数用法详解

轻松学会MySql分组函数