zoukankan      html  css  js  c++  java
  • ThinkPHP5 (mySQL) 统计各个时间段内的订单量

    moTzxx 最后发布于2019-11-12 11:27:20 阅读数 236 收藏
    展开
    背景
    今天在进行后台数据监控时;
    需要对一天24小时的下单量进行时间段的统计;
    但是下单时间字段 pay_time 选取的是 timestamp 类型;
    此时需要进行时间段的数据分组剥离,在此做一下实现方式,请多指教 …

    环境

    框架:ThinkPHP5.1.2
    系统:nginx/win10 、phpStudy2017
    1
    2
    实现方式
    1. 首先,考虑到使用的是 group分组技巧;
    那么就必须要将 pay_time 中记录的字段数据进行 24时的定位切分;
    这里可以用到 substring() 方法的支持 【字段取值举例:2019-08-23 09:25:09】
    2. 以我的 ThinkPHP5框架的代码规范
    源码书写如下:
    $res = Db::name('order_goods og')
    ->field("substring(pay_time,12,2) hour,count(og.id) count")
    ->join("order_infos oi","oi.order_id = og.order_id")
    ->where([ ["pay_status","=",1]])
    ->group('hour')
    ->order('hour','asc')
    ->select();
    1
    2
    3
    4
    5
    6
    7
    即对应的原生sql语句为:
    SELECT substring(pay_time,12,2) hour,count(og.id) count FROM tp5_xorder_goods og
    INNER JOIN `tp5_xorder_infos` `oi` ON `oi`.`order_id`=`og`.`order_id`
    WHERE `pay_status` = 1
    GROUP BY `hour`
    ORDER BY `hour` ASC
    1
    2
    3
    4
    5
    得到的数据打印如下:

    3. 之后就是对得到的数据进一步的整理
    以我使用 ECharts图表库 进行数据展示为例,那么我的处理方式如下:
    $timeRes = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];
    foreach ($timeRes as $key => $value){
    foreach ($res as $key2 => $value2){
    $hour = intval($value2['hour']);
    if ($key == $hour){
    $timeRes[$key] = $value2['count'];
    //echo "hour:".$hour.";key:".$key.";count:".$value2['count']."<br/>";
    break;
    }else{
    continue;
    }
    }
    }
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    4. 数据整合后,展示效果如下:


    参考文章:
    - MySQL substring()函数
    - mysql 获取某个时间段每一天的统计数据
    ————————————————
    版权声明:本文为CSDN博主「moTzxx」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/u011415782/article/details/103024669

  • 相关阅读:
    C# 托管内存与非托管内存之间的转换
    A*算法详解链接
    【转】使用minizip解压缩多个文件(基于zlib)
    lua中table的遍历,以及删除
    clientHeight scrollHeight offsetHeight
    消息中间件(转)
    js 原型链和继承(转)
    session 和 cookie (转)
    java servlet
    redis 命令
  • 原文地址:https://www.cnblogs.com/apolloren/p/12252373.html
Copyright © 2011-2022 走看看