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 相关文章推荐
Win9x/ME下Apache+PHP安装配置
Oct 09 PHP
php中比较简单的导入phpmyadmin生成的sql文件的方法
Jun 28 PHP
Zend的AutoLoad机制介绍
Sep 27 PHP
ThinkPHP中关联查询实例
Dec 02 PHP
php中ob函数缓冲机制深入理解
Aug 03 PHP
PHP扩展开发教程(总结)
Nov 04 PHP
[原创]解决wincache不支持64位PHP5.5/5.6的问题(提供64位wincache下载)
Jun 22 PHP
Yii框架防止sql注入,xss攻击与csrf攻击的方法
Oct 18 PHP
thinkPHP中验证码的简单实现方法
Dec 05 PHP
php str_getcsv把字符串解析为数组的实现方法
Apr 05 PHP
php使用ftp实现文件上传与下载功能
Jul 21 PHP
php从数据库读取数据,并以json格式返回数据的方法
Aug 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
Win9x/ME下Apache+PHP安装配置
2006/10/09 PHP
PHP中的MYSQL常用函数(php下操作数据库必备)
2010/09/12 PHP
php中的四舍五入函数代码(floor函数、ceil函数、round与intval)
2014/07/14 PHP
php使用function_exists判断函数可用的方法
2014/11/19 PHP
详解thinkphp5+swoole实现异步邮件群发(SMTP方式)
2017/10/13 PHP
IE和Firefox在JavaScript应用中的兼容性探讨
2008/04/01 Javascript
IE和firefox浏览器的event事件兼容性汇总
2009/12/06 Javascript
精选的10款用于构建良好易用性网站的jQuery插件
2011/01/23 Javascript
Javascript中的匿名函数与封装介绍
2015/03/15 Javascript
JavaScript编程学习技巧汇总
2016/02/21 Javascript
分享JS代码实现鼠标放在输入框上输入框和图片同时更换样式
2016/09/01 Javascript
AngularJs Understanding the Model Component
2016/09/02 Javascript
写给vue新手们的vue渲染页面教程
2017/09/01 Javascript
javascript实现拖拽碰撞检测
2020/03/12 Javascript
Python内置函数Type()函数一个有趣的用法
2015/02/18 Python
用Python制作检测Linux运行信息的工具的教程
2015/04/01 Python
python中string模块各属性以及函数的用法介绍
2016/05/30 Python
python3安装pip3(install pip3 for python 3.x)
2018/04/03 Python
神经网络相关之基础概念的讲解
2018/12/29 Python
Python面向对象程序设计OOP深入分析【构造函数,组合类,工具类等】
2019/01/05 Python
Python构建图像分类识别器的方法
2019/01/12 Python
python实现数据分析与建模
2019/07/11 Python
Python操作MySQL数据库实例详解【安装、连接、增删改查等】
2020/01/17 Python
Python turtle画图库&amp;&amp;画姓名实例
2020/01/19 Python
aec加密 php_php aes加密解密类(兼容php5、php7)
2021/03/14 PHP
迷你唐卡软皮鞋:Minnetonka Moccasin
2018/05/01 全球购物
REISS美国官网:伦敦最受欢迎的时尚品牌
2019/08/16 全球购物
澳大利亚女装精品店:Alannah Hill
2020/07/29 全球购物
UNIX文件系统分类
2014/11/11 面试题
公司庆典邀请函范文
2014/01/13 职场文书
《藤野先生》教学反思
2014/02/19 职场文书
志愿者活动总结报告
2014/06/27 职场文书
优秀党务工作者先进事迹材料
2014/12/25 职场文书
商务宴请邀请函范文
2015/02/02 职场文书
2015年五四青年节活动总结
2015/02/10 职场文书
干部外出学习心得体会
2016/01/18 职场文书