ThinkPHP5(mySQL)统计各个时间段内的订单量

ThinkPHP5(mySQL)统计各个时间段内的订单量
背景
今天在进⾏后台数据监控时;
需要对⼀天24⼩时的下单量进⾏时间段的统计;
但是下单时间字段 pay_time 选取的是 timestamp 类型;
此时需要进⾏时间段的数据分组剥离,在此做⼀下实现⽅式,请多指教 …
环境
框架:ThinkPHP5.1.2
系统:nginx/win10 、phpStudy2017
实现⽅式
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();
即对应的原⽣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
得到的数据打印如下:
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){
rtf格式$hour=intval($value2['hour']);
if($key==$hour){
$timeRes[$key]=$value2['count'];
//echo "hour:".$hour.";key:".$key.";count:".$value2['count']."<br/>";
break;在家不当小皇帝
}else{
continue;
}
}
}
4. 数据整合后,展⽰效果如下:
参考⽂章:-吉林工程技术师范学院学报
-

本文发布于:2024-09-25 03:22:46,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/153237.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:数据   时间段   分组   师范学院   规范
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议