laravel实现按月或天或小时统计mysql数据的方法


Posted in PHP onOctober 09, 2019

在PHP里怎么比较简单的实现按时间(如按月,按天,按小时)来统计表里的数据呢?

如:要实现获取下图曲线图数据(ps:当然也可能是柱状图等,数据都是一样的),默认获取七天内的数据,点击今天,7天,15天,30天可任意切换,其中今天是按小时统计.

不过我的实现方法有一个小缺点,当某个小时内是没有数据的,那么该小时不会出现,不过这个应该可以通过前端的形式弥补

好了,废话不多说,上图上代码!

laravel实现按月或天或小时统计mysql数据的方法

1. 控制器内容

/**
   * [getsellerdata 获取某时间段内商户结算查询数据]
   * @param Request $request [description] start:起始时间 end:结束时间 
   * @return [type]      [description]
   */
  public function getsellerqudata(Request $request){
    $data = $this->dataanalysis->getSellerQuData($request->start,$request->end);
    return $data;    
  }

2. 库文件内容

/**
   * [getSellerQuData 获取商户结算数据 曲线]
   * @param [string] $start [起始时间]2017-08
   * @param [string] $end  [结束时间]
   * @return [type]    [description]
   */
  public function getSellerQuData($name,$start,$end){

    //计算时间差值,以决定格式化时间格式
    $diff = strtotime($end)-strtotime($start);

    //分组条件 1天内按小时分组,否则按天/月分组
    //86400/1天 2678400/1月
    if($diff<86400&&$diff>0){
      $sort = '%H';
    }elseif($diff<2678400){
      $sort = '%Y-%m-%d';
    }else{
      $sort = '%Y-%m';
    }
    //把数据添加时间按格式化时间分组求和,求和分两种,一种是直接求和,一种是满足case when条件的数据求和
    $query = DB::table('user_withdrawals as w')->select(DB::raw("FROM_UNIXTIME(created_at,'{$sort}') as thedata,sum(case when w.cash_type = 1 then w.money end) as xiabi,sum(case when w.cash_type = 2 then w.money end) as online,sum(w.money) as alls"))->groupBy(DB::raw("FROM_UNIXTIME(created_at,'{$sort}')"));

    //条件筛选 某时间段内
    if( !empty($start) ){
      $query->whereRaw('w.created_at >= ?',strtotime($start));
    }
    if( !empty($end) ){
      $query->whereRaw('w.created_at <= ?',strtotime($end));
    }

    $data = $query->get();

    return $data;
  }

以上这篇laravel实现按月或天或小时统计mysql数据的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
站长助手-网站web在线管理程序 v1.0 下载
May 12 PHP
第4章 数据处理-php字符串的处理-郑阿奇(续)
Jul 04 PHP
php中adodbzip类实例
Dec 08 PHP
PHP多线程之内部多线程实例分析
Mar 09 PHP
php实现通用的信用卡验证类
Mar 24 PHP
PHP SOCKET编程详解
May 22 PHP
PHP中each与list用法分析
Jan 08 PHP
PHP strip_tags保留多个HTML标签的方法
May 22 PHP
php监测数据是否成功插入到Mysql数据库的方法
Nov 25 PHP
php+mysql实现简单登录注册修改密码网页
Nov 30 PHP
PHP实现json_decode不转义中文的方法
May 20 PHP
PHP实现八皇后算法
May 06 PHP
laravel5.5添加echarts实现画图功能的方法
Oct 09 #PHP
使用laravel和ECharts实现折线图效果的例子
Oct 09 #PHP
Laravel统计一段时间间隔的数据方法
Oct 09 #PHP
浅谈PHP5.6 与 PHP7.0 区别
Oct 09 #PHP
laravel按天、按小时,查询数据的实例
Oct 09 #PHP
laravel多条件查询方法(and,or嵌套查询)
Oct 09 #PHP
Laravel find in set排序实例
Oct 09 #PHP
You might like
十天学会php之第三天
2006/10/09 PHP
php一些公用函数的集合
2008/03/27 PHP
探讨PHP中OO之静态关键字以及类常量的详解
2013/06/07 PHP
使用PHP备份MySQL和网站发送到邮箱实例代码
2013/11/28 PHP
关于PHP的curl开启问题探讨
2014/04/08 PHP
Laravel如何使用Redis共享Session
2018/02/23 PHP
PHP实现打包zip并下载功能
2018/06/12 PHP
javascript入门·图片对象(无刷新变换图片)\滚动图像
2007/10/01 Javascript
JS查看对象功能代码
2008/04/25 Javascript
比较搞笑的js陷阱题
2010/02/07 Javascript
Js如何判断客户端是PC还是手持设备简单分析
2012/11/22 Javascript
JS实现判断滚动条滚到页面底部并执行事件的方法
2014/12/18 Javascript
javascript显示倒计时控制按钮的简单实现
2016/06/07 Javascript
基于jQuery实现弹幕APP
2017/02/10 Javascript
js实现倒计时关键代码
2017/05/05 Javascript
jQuery实现的简单在线计算器功能
2017/05/11 jQuery
基于Bootstrap模态对话框只加载一次 remote 数据的解决方法
2017/07/09 Javascript
Js经典案例的实例代码
2018/05/10 Javascript
微信小程序如何使用globalData的方法
2019/06/06 Javascript
Vue  webpack 项目自动打包压缩成zip文件的方法
2019/07/24 Javascript
Vue实现图片轮播组件思路及实例解析
2020/05/11 Javascript
在Pycharm中对代码进行注释和缩进的方法详解
2019/01/20 Python
python中用logging实现日志滚动和过期日志删除功能
2019/08/20 Python
基于python实现操作redis及消息队列
2020/08/27 Python
通过代码简单了解django model序列化作用
2020/11/12 Python
解决PyCharm无法使用lxml库的问题(图解)
2020/12/22 Python
Html5在手机端调用相机的方法实现
2020/05/13 HTML / CSS
为什么在使用动态 SQL 语句时必须为低层数据库对象授予权限
2012/12/13 面试题
档案管理员岗位职责
2013/12/01 职场文书
天鹅的故事教学反思
2014/02/04 职场文书
党员教师四风自我剖析材料
2014/09/30 职场文书
三严三实学习心得体会
2014/10/13 职场文书
员工工作失职检讨书范文!
2019/07/03 职场文书
mysql优化之query_cache_limit参数说明
2021/07/01 MySQL
MySQL慢查询优化解决问题
2022/03/17 MySQL
关于MySQL临时表为什么可以重名的问题
2022/03/22 MySQL