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 相关文章推荐
给php新手谈谈我的学习心得
Feb 25 PHP
php上的memcache和memcached两个pecl库
Mar 29 PHP
三个类概括PHP的五种设计模式
Sep 05 PHP
探讨php define()函数及defined()函数使用详解
Jun 09 PHP
ThinkPHP有变量的where条件分页实例
Nov 03 PHP
PHP图像处理之imagecreate、imagedestroy函数介绍
Nov 19 PHP
PHP常见数组函数用法小结
Mar 21 PHP
PHP框架性能测试报告
May 08 PHP
php图片添加水印例子
Jul 20 PHP
PHP表单验证内容是否为空的实现代码
Nov 14 PHP
深入理解PHP的远程多会话调试
Sep 21 PHP
laravel框架中路由设置,路由参数和路由命名实例分析
Nov 23 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插入中文到sqlserver 2008里出现乱码的解决办法分享
2012/07/19 PHP
ThinkPHP基于PHPExcel导入Excel文件的方法
2014/10/15 PHP
PHP采用curl模仿用户登陆新浪微博发微博的方法
2014/11/07 PHP
THINKPHP在添加数据的时候获取主键id的值方法
2017/04/03 PHP
[原创]PHP实现生成vcf vcard文件功能类定义与使用方法详解【附demo源码下载】
2017/09/02 PHP
thinkphp5 加载静态资源路径与常量的方法
2017/12/24 PHP
php 使用ActiveMQ发送消息,与处理消息操作示例
2020/02/23 PHP
js验证电话号码与手机支持+86的正则表达式
2014/01/23 Javascript
浅谈JavaScript前端开发的MVC结构与MVVM结构
2016/06/03 Javascript
JS+HTML5实现的前端购物车功能插件实例【附demo源码下载】
2016/10/17 Javascript
JSONP跨域请求
2017/03/02 Javascript
JavaScript实现获取远程的html到当前页面中
2017/03/26 Javascript
基于vue的换肤功能的示例代码
2017/10/10 Javascript
JS中精巧的自动柯里化实现方法
2017/12/12 Javascript
微信小程序获取用户openid的实现
2018/12/24 Javascript
npm 语义版本控制详解
2019/09/10 Javascript
环形加载进度条封装(Vue插件版和原生js版)
2019/12/04 Javascript
Postman环境变量全局变量使用方法详解
2020/08/13 Javascript
关于Django外键赋值问题详解
2017/08/13 Python
python实现K近邻回归,采用等权重和不等权重的方法
2019/01/23 Python
python 实现快速生成连续、随机字母列表
2019/11/28 Python
Python 格式化打印json数据方法(展开状态)
2020/02/27 Python
Python判断字符串是否为空和null方法实例
2020/04/26 Python
python 监控服务器是否有人远程登录(详细思路+代码)
2020/12/18 Python
美国最大的网上冲印店:Shutterfly
2017/01/01 全球购物
世界上最大的售后摩托车零配件超市:J&P Cycles
2017/12/08 全球购物
Omio波兰:全欧洲低价大巴、火车和航班搜索和比价
2018/02/16 全球购物
介绍一下Linux文件的记录形式
2013/09/29 面试题
学生自我评价范文
2014/02/02 职场文书
初中国旗下的演讲稿
2014/08/28 职场文书
超市店庆活动方案
2014/08/31 职场文书
乡镇干部个人对照检查材料思想汇报
2014/10/04 职场文书
怎么写工作检讨书
2014/11/16 职场文书
职场:企业印章管理制度(模板)
2019/10/18 职场文书
Java基于Dijkstra算法实现校园导游程序
2022/03/17 Java/Android
Vue3实现简易音乐播放器组件
2022/08/14 Vue.js