MySQL如何按日期获取指定时间段内订单总数
需求:如何对订单支付记录表,获取指定日期之间,每天的的订单分布,比如想获取 2020-08-01到 2020-09-25,每日的订单分布。
如下表结构:
思路如下:
主要是添加时间字段add_time,进行处理,变成日期格式; 然后通过BETWEEN操作符在 WHERE 子句中使用,作用是选取介于两个值之间的数据范围,来匹配日期范围; 接下来通过CASE WHEN exc THEN 1 ELSE 0 END语句进行分类查询获取订单分布情况; 最后通过GROUP BY 对新增处理后的时间time进行分组,按天返回每日订单,和ORDER BY time DESC降序;
SQL写法如下:
SELECT FROM_UNIXTIME(add_time, '%Y-%m-%d') AS time, COUNT(1) AS '总单量(订单总数)', SUM( CASE WHEN pay_status=1 THEN 1 ELSE 0 END ) AS '已支付(订单总数)', SUM( CASE WHEN pay_status=1 THEN money ELSE 0 END ) AS '已收款(订单总价)', SUM( CASE WHEN pay_status=0 THEN 1 ELSE 0 END ) AS '已支付(订单总数)', SUM( CASE WHEN pay_status=0 THEN money ELSE 0 END ) AS '待支付(订单总数)' FROM `pw_pay_log` WHERE FROM_UNIXTIME(add_time, '%Y-%m-%d') BETWEEN '2020-08-18' AND '2020-09-11' GROUP BY time ORDER BY time DESC;
最后查询结果如下:
-----END
影子是一个会撒谎的精灵,它在虚空中流浪和等待被发现之间;在存在与不存在之间....