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;

最后查询结果如下:

 

 

 

posted @ 2020-09-16 21:04  在斑马线上散布  阅读(2101)  评论(1编辑  收藏  举报
夫人不言,言必有中。这是高级臣僚的一种可贵品质,言辞精炼,直抵要害。