mysql查询日期分组,不存在的补全0,做每天数据图表,根据日期,N天数往前查

时间:2020-03-27
本文章向大家介绍mysql查询日期分组,不存在的补全0,做每天数据图表,根据日期,N天数往前查,主要包括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

原文地址:https://www.cnblogs.com/zhangrongfei/p/12582220.html