UnitIntegralTotalMapper.xml
1.51 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zteits.urbanops.module.garden.dal.mysql.unitintegraltotal.UnitIntegralTotalMapper">
<!-- 根据related_task_id统计总积分(add_integral - sub_integral) -->
<select id="queryIntegralByRelatedTaskIds" resultType="com.zteits.urbanops.module.garden.controller.admin.unitintegraltotal.vo.UnitIntegralRespVO">
SELECT
COALESCE(a.related_task_id, b.related_task_id) AS relatedTaskId,
COALESCE(a.add_integral, 0) - COALESCE(b.sub_integral, 0) AS totalIntegral
FROM
-- 子查询1:统计增加积分
(SELECT
related_task_id,
SUM(add_integral) AS add_integral
FROM garden_unit_integral_add
WHERE deleted = '0'
AND related_task_id IN
<foreach collection="relatedTaskIds" item="taskId" open="(" separator="," close=")">
#{taskId}
</foreach>
GROUP BY related_task_id) a
-- 左连接扣减积分表
LEFT JOIN
(SELECT
related_task_id,
SUM(sub_integral) AS sub_integral
FROM garden_unit_integral_sub
WHERE deleted = '0'
AND related_task_id IN
<foreach collection="relatedTaskIds" item="taskId" open="(" separator="," close=")">
#{taskId}
</foreach>
GROUP BY related_task_id) b
ON a.related_task_id = b.related_task_id
</select>
</mapper>