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 相关文章推荐
PHP4实际应用经验篇(8)
Oct 09 PHP
解析isset与is_null的区别
Aug 09 PHP
ThinkPHP调用百度翻译类实现在线翻译
Jun 26 PHP
对PHP新手的一些建议(PHP学习经验总结)
Aug 20 PHP
PHP高手需要要掌握的知识点
Aug 21 PHP
PHP中Memcache操作类及用法实例
Dec 12 PHP
php统计数组元素个数的方法
Jul 02 PHP
php入门教程之Zend Studio设置与开发实例
Sep 09 PHP
PHP实现基于图的深度优先遍历输出1,2,3...n的全排列功能
Nov 10 PHP
浅谈PHP各环境下的伪静态配置
Mar 13 PHP
PHP实现的文件浏览器功能简单示例
Sep 12 PHP
PHP常用函数之获取汉字首字母功能示例
Oct 21 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
火影忍者:三大瞳力之一的白眼,为什么没有写轮眼那么出色?
2020/03/02 日漫
PHP session常见问题集锦及解决办法总结
2007/03/18 PHP
在PHP中检查PHP文件是否有语法错误的方法
2009/12/23 PHP
php限制上传文件类型并保存上传文件的方法
2015/03/13 PHP
vmware linux系统安装最新的php7图解
2019/04/14 PHP
js检测客户端不是firefox则提示下载
2007/04/07 Javascript
JavaScript 组件之旅(二)编码实现和算法
2009/10/28 Javascript
JS获得QQ号码的昵称,头像,生日的简单实例
2013/12/04 Javascript
js自定义回调函数
2015/12/13 Javascript
使用JavaScript脚本判断页面是否在微信中被打开
2016/03/06 Javascript
js获取地址栏参数的两种方法
2017/06/27 Javascript
浅谈Node模块系统及其模式
2017/11/17 Javascript
Angular 4.x+Ionic3踩坑之Ionic3.x pop反向传值详解
2018/03/13 Javascript
微信小程序中使用wxss加载图片并实现动画效果
2018/08/13 Javascript
vue 使某个组件不被 keep-alive 缓存的方法
2018/09/21 Javascript
jQuery事件绑定和解绑、事件冒泡与阻止事件冒泡及弹出应用示例
2019/05/13 jQuery
Vue路由模块化配置的完整步骤
2019/08/14 Javascript
JavaScript常用工具函数库汇总
2020/09/17 Javascript
夯基础之手撕javascript继承详解
2020/11/09 Javascript
[07:47]DOTA2国际邀请赛采访专栏:探访Valve总部
2013/08/08 DOTA
[45:10]NB vs Liquid Supermajor小组赛 A组胜者组决赛 BO3 第二场 6.2
2018/06/04 DOTA
用Python创建声明性迷你语言的教程
2015/04/13 Python
详解python中字典的循环遍历的两种方式
2017/02/07 Python
Python变量赋值的秘密分享
2018/04/03 Python
Linux 修改Python命令的方法示例
2018/12/03 Python
基于Python执行dos命令并获取输出的结果
2019/12/30 Python
python GUI库图形界面开发之PyQt5信号与槽多窗口数据传递详细使用方法与实例
2020/03/08 Python
Django查询优化及ajax编码格式原理解析
2020/03/25 Python
详解Python爬虫爬取博客园问题列表所有的问题
2021/01/18 Python
Python的轻量级ORM框架peewee使用教程
2021/02/05 Python
html5记忆翻牌游戏实现思路及代码
2013/07/25 HTML / CSS
以实惠的价格轻松租车,免费取消:Easyrentcars
2019/07/16 全球购物
监察建议书范文
2014/03/12 职场文书
关爱老人标语
2014/06/21 职场文书
幼儿园园务工作总结2015
2015/05/18 职场文书
JavaScript前端面试扁平数据转tree与tree数据扁平化
2022/06/14 Javascript