SELECT
CONCAT(temp.date_time,"-01") as createTime,
format(IF(u.`value` IS NULL, 0, u.`value`),2) as avgValue
FROM(
SELECT
DATE_FORMAT(adddate(CURDATE()- INTERVAL 11 MONTH, numlist.id),"%Y-%m") AS date_time
FROM(SELECT
n1.i + n10.i * 10 + n100.i * 100 AS id
FROM
num n1
CROSS JOIN num AS n10
CROSS JOIN num AS n100
) AS numlist
WHERE
adddate(CURDATE()- INTERVAL 11 MONTH, numlist.id) <= CURDATE() GROUP BY date_time) AS temp
LEFT JOIN (
SELECT DATE_FORMAT(b.create_time,'%Y-%m') AS udate,AVG(b.burn_in_value) as value FROM interface_list a
JOIN village e ON a.v_id=e.v_id
JOIN burn_in_value b ON a.sensor_number = b.sensor_number
JOIN district d ON a.d_id=d.d_id
JOIN user_project c ON a.project_list_id=c.project_list_id
WHERE c.user_id=27#{userId,jdbcType=INTEGER}
#<if test="districtName != null and districtName != ''">
# AND d.d_name=#{districtName,jdbcType=VARCHAR}
#</if>
#<if test="burndis != null and burndis != ''">
# AND e.v_name=#{burndis,jdbcType=VARCHAR}
#</if>
GROUP BY DATE_FORMAT(b.create_time,'%Y-%m')
) AS u ON temp.date_time = u.udate ORDER BY temp.date_time;
mysql处理最近一年每个月的数据时遇到缺少时间段,进行补时间,值为0的解决案例
最新推荐文章于 2022-01-22 16:57:22 发布