Loading

Mysql分组统计最近七天数据,无则补零

SELECT
  DATE_FORMAT(a.timeDay, '%m-%d') AS time,
  IFNULL(b.success, 0) AS success,
  IFNULL(b.fail, 0) AS fail
FROM
  (
    SELECT
      curdate() AS timeDay
    UNION ALL
    SELECT
      date_sub(curdate(), INTERVAL 1 DAY) AS timeDay
    UNION ALL
    SELECT
      date_sub(curdate(), INTERVAL 2 DAY) AS timeDay
    UNION ALL
    SELECT
      date_sub(curdate(), INTERVAL 3 DAY) AS timeDay
    UNION ALL
    SELECT
      date_sub(curdate(), INTERVAL 4 DAY) AS timeDay
    UNION ALL
    SELECT
      date_sub(curdate(), INTERVAL 5 DAY) AS timeDay
    UNION ALL
    SELECT
      date_sub(curdate(), INTERVAL 6 DAY) AS timeDay
  ) a
  LEFT JOIN (
    SELECT
      date(d.last_execute_date) AS time,
      sum(
        CASE
          WHEN d.execute_status = '3' THEN 1
          ELSE 0
        END
      ) AS success,
      sum(
        CASE
          WHEN d.execute_status = '4' THEN 1
          ELSE 0
        END
      ) AS fail
    FROM
      data_collect d
    GROUP BY
      date(d.last_execute_date)
  ) b ON a.timeDay = b.time
ORDER BY
  time
posted @ 2021-07-13 09:47  AnNong  阅读(616)  评论(0)    收藏  举报