mysql查询日期分组,不存在的补全0,做每天数据图表,根据日期,N天数往前查
SELECT IFNULL( DATA.count, 0 ) AS count, day_list.DAY AS createTime FROM ( SELECT DATE_FORMAT( create_time, '%Y-%m-%d' ) DAY, count( order_base_id ) count FROM odr_order_base WHERE pay_status = 1 GROUP BY DAY ) DATA RIGHT JOIN ( SELECT @date := DATE_ADD( @date, INTERVAL - 1 DAY ) DAY FROM ( SELECT @date := DATE_ADD( '2020-3-27', INTERVAL + 1 DAY ) FROM odr_order_base ) days LIMIT 7 ) day_list ON day_list.DAY = DATA.DAY
<select id="selectIndexList" resultType="com.xinruke.cmall.order.interfaces.vo.OrderBaseIndexListVO">
SELECT
IFNULL( DATA.count, 0 ) AS count,
day_list.DAY AS createTime
FROM
( SELECT DATE_FORMAT( create_time, '%Y-%m-%d' ) DAY, count( order_base_id ) count FROM odr_order_base
WHERE
pay_status = #{param.payStatus}
AND status IN
<foreach collection="statusList" item="status" separator="," open="(" close=")">
#{status}
</foreach>
GROUP BY DAY )
DATA RIGHT JOIN (
SELECT
@date := DATE_ADD( @date, INTERVAL - 1 DAY ) DAY
FROM
( SELECT @date := DATE_ADD( #{param.createTime}, INTERVAL + 1 DAY ) FROM odr_order_base ) days
LIMIT #{param.todayNum}
) day_list ON day_list.DAY = DATA.DAY
</select>
SELECT
SELECT IFNULL( DATA.count, 0 ) AS count, day_list.DAY AS createTime FROM ( SELECT DATE_FORMAT( create_time, '%Y-%m-%d' ) DAY, count( order_base_id ) count FROM odr_order_base WHERE pay_status = 1 GROUP BY DAY ) DATA RIGHT JOIN ( SELECT @date := DATE_ADD( @date, INTERVAL - 1 DAY ) DAY FROM ( SELECT @date := DATE_ADD( '2020-3-27', INTERVAL + 1 DAY ) FROM odr_order_base ) days LIMIT 7 ) day_list ON day_list.DAY = DATA.DAY
IFNULL( DATA.count, 0 ) AS count,day_list.DAY AS createTime FROM( SELECT DATE_FORMAT( create_time, '%Y-%m-%d' ) DAY, count( order_base_id ) count FROM odr_order_base WHERE pay_status = 1 GROUP BY DAY )DATA RIGHT JOIN (SELECT@date := DATE_ADD( @date, INTERVAL - 1 DAY ) DAY FROM( SELECT @date := DATE_ADD( '2020-3-27', INTERVAL + 1 DAY ) FROM odr_order_base ) days LIMIT 7 ) day_list ON day_list.DAY = DATA.DAY

浙公网安备 33010602011771号