mysql求和函数_MySQL的sum()函数

本文介绍了一种使用SQL对用户参与活动的评分进行汇总的方法,并详细解释了如何通过GROUP BY和SUM函数按用户ID进行评分求和,同时给出了针对查询结果进行降序排列的具体SQL语句。文中还解决了在实际应用中遇到的问题,例如使用map和ArrayList处理查询结果的顺序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

4646020352fc5f715c275fa09a3d7a69.png

用户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 ;

结果为:

14e7ee6158333a7331da7095a67fb53a.png

完成需求,以下是实际应用遇到的小问题:

**Dao.xml :

8ce88532eb13a52f60faafd743e9d55c.png

需要注意:因为sum()是一个函数,所以取值时要用map接收,但是 我们这个需求是要降序的,map 又是无序的,用map接收岂不是做了无用功?不用担心,在Dao里我们再封装一层:

**Dao.java :

e76fff5791088e4bc53d0e59e40fec31.png

把他用ArrayList来接收,Map做泛型,这样就不怕它的顺序变化了,顺便贴一下实现类里的取值方法:

**ServiceImpl . java :

c12c989671224035109649c9c665b19c.png

foreach循环,但如果取sum(score)时,直接像上一行取contacts_id一样   ,转String类型运行是会报错的,需要借助Integer来做转换,这样取到的值才是正确不会报异常的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值