美文网首页
mysq 按天,月,年统计

mysq 按天,月,年统计

作者: 打不死的小强8号 | 来源:发表于2020-03-14 15:58 被阅读0次

t_member和t_order是业务表,根据自己得需求创建

近7天统计 (天数6可以修改)

SELECT tbl.temp_date AS temp_date,
        IFNULL(tbr.totalnum, 0) AS total_num
        FROM
        (SELECT @s :=@s + 1 AS _index, DATE(DATE_SUB(CURRENT_DATE, INTERVAL @s DAY)) AS temp_date
        FROM
        mysql.help_topic h
        INNER JOIN
        (SELECT @s := - 1) temp  WHERE @s < 6  ORDER BY temp_date) AS tbl
        LEFT JOIN (SELECT count(member_id) AS totalnum, DATE(create_time) createtime
        FROM t_member GROUP BY createtime ) AS tbr ON tbl.temp_date = tbr.createtime
        GROUP BY tbl.temp_date;

某月统计(日期传某月的第一天)

SELECT tbl.temp_date AS temp_date,
        IFNULL(tbm.totalnum, 0) AS total_num,
        IFNULL(tbr.carWashCount, 0) AS carWashCount,
        IFNULL(tbr.income, 0) AS income
        FROM
        (SELECT @s :=@s + 1 AS _index, DATE(DATE_ADD("2019-11-1", INTERVAL @s DAY)) AS temp_date
        FROM
        mysql.help_topic h
        INNER JOIN
        (SELECT @s := - 1) temp  WHERE @s < (DAY(LAST_DAY("2019-11-1"))-1) ORDER BY temp_date) AS tbl
        LEFT JOIN (SELECT COUNT(order_id) AS carWashCount,SUM(payment_price) AS income, DATE(create_time) createtime
        FROM t_order
        GROUP BY createtime ) AS tbr ON tbl.temp_date = tbr.createtime
        LEFT JOIN (SELECT COUNT(member_id) AS totalnum, DATE(create_time) createtime
        FROM t_member GROUP BY createtime ) AS tbm ON tbl.temp_date = tbm.createtime
        GROUP BY tbl.temp_date;

某年统计(查询某一年的,日期传某年某月第一天日期(如:2019-01-01)

SELECT tbl.temp_date AS temp_date,
        IFNULL(tbm.totalnum, 0) AS total_num,
        IFNULL(tbr.carWashCount, 0) AS carWashCount,
        IFNULL(tbr.income, 0) AS income
        FROM
        (SELECT @s :=@s + 1 AS _index,  EXTRACT(YEAR_MONTH FROM DATE_ADD("2019-01-01", INTERVAL @s MONTH)) AS temp_date
        FROM
        mysql.help_topic h
        INNER JOIN
        (SELECT @s := -1) temp  WHERE @s < 11 ORDER BY temp_date) AS tbl
        LEFT JOIN (SELECT COUNT(order_id) AS carWashCount,SUM(payment_price) AS income, EXTRACT(YEAR_MONTH FROM create_time) createtime
        FROM t_order GROUP BY createtime ) AS tbr ON tbl.temp_date = tbr.createtime
        LEFT JOIN (SELECT COUNT(member_id) AS totalnum, EXTRACT(YEAR_MONTH FROM create_time) createtime
        FROM t_member GROUP BY createtime ) AS tbm ON tbl.temp_date = tbm.createtime
        GROUP BY tbl.temp_date;

相关文章

网友评论

      本文标题:mysq 按天,月,年统计

      本文链接:https://www.haomeiwen.com/subject/vdmoictx.html