zoukankan      html  css  js  c++  java
  • 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;

    最后查询结果如下:

  • 相关阅读:
    MongoDB 之 手把手教你增删改查 MongoDB
    MongoDB 之 你得知道MongoDB是个什么鬼 MongoDB
    全栈12期的崛起之捡点儿有用的说说
    Python 常用模块
    Python3中的内置函数
    Python程序员之面试必回习题
    Django之初始庐山真面目
    Django之ORM操作
    MySQL-索引
    MySQL-函数
  • 原文地址:https://www.cnblogs.com/camg/p/13681418.html
Copyright © 2011-2022 走看看