1. //根据format字符串格式化date值。下列修饰符可以被用在format字符串中: 
  2. //%M 月名字(January……December) 
  3. //%W 星期名字(Sunday……Saturday) 
  4. //%D 有英语前缀的月份的日期(1st, 2nd, 3rd, 等等。) 
  5. //%Y 年, 数字, 4 位 
  6. //%y 年, 数字, 2 位 
  7. //%a 缩写的星期名字(Sun……Sat) 
  8. //%d 月份中的天数, 数字(00……31) 
  9. //%e 月份中的天数, 数字(0……31) 
  10. //%m 月, 数字(01……12) 
  11. //%c 月, 数字(1……12) 
  12. //%b 缩写的月份名字(Jan……Dec) 
  13. //%j 一年中的天数(001……366) 
  14. //%H 小时(00……23) 
  15. //%k 小时(0……23) 
  16. //%h 小时(01……12) 
  17. //%I 小时(01……12) 
  18. //%l 小时(1……12) 
  19. //%i 分钟, 数字(00……59) 
  20. //%r 时间,12 小时(hh:mm:ss [AP]M) 
  21. //%T 时间,24 小时(hh:mm:ss) 
  22. //%S 秒(00……59) 
  23. //%s 秒(00……59) 
  24. //%p AM或PM 
  25. //%w 一个星期中的天数(0=Sunday ……6=Saturday ) 
  26. //%U 星期(0……52), 这里星期天是星期的第一天 
  27. //%u 星期(0……52), 这里星期一是星期的第一天 
  28. //%% 一个文字“%”。
  1. /**
  2. * 概览统计
  3. * @param Request $request
  4. * @return \Illuminate\Http\JsonResponse
  5. */
  6. public function overviewStatistical(Request $request)
  7. {
  8. $time_quantum=$request->input('time_quantum') ?? 'month';
  9. $start=$request->input('start') ?? '2019-01-01';
  10. $end=$request->input('end') ?? '2020-01-01';
  11.  
  12. $user_id=$request->user()->id;
  13. $item_id=ImOrganize::where('user_id',$user_id)->value('id');
  14. $item_id=28;
  15. switch ($time_quantum){
  16. case 'days':
  17. $sort='%Y-%m-%d';
  18. $size='days';
  19. $data=$this->monthOverviewStatistical($item_id,$start,$end,$sort,$size);
  20. break;
  21.  
  22. case 'weeks':
  23. $sort='%Y-%u';
  24. $size='weeks';
  25. $data=$this->monthOverviewStatistical($item_id,$start,$end,$sort,$size);
  26. break;
  27. default:
  28. $sort='%Y-%m';
  29. $size='months';
  30. $data=$this->monthOverviewStatistical($item_id,$start,$end,$sort,$size);
  31. }
  32.  
  33. return response()->json($data)->setStatusCode(200);
  34. }
  35.  
  36. /**
  37. * 粒度数据统计
  38. * @param $item_id
  39. * @param $start
  40. * @param $end
  41. * @return mixed
  42. */
  43. public function monthOverviewStatistical($item_id,$start,$end,$sort,$size)
  44. {
  45. //项目关注人数走势(单位千人)
  46. $data['user_item']=$this->getTotalMonthItem($item_id,$start,$end,$sort,$size);
  47.  
  48. //项目关联社区id
  49. $group_id=Group::where('im_organize_id',$item_id)->value('id');
  50. if(!$group_id){
  51. $data['group_members']=0;
  52. }else{
  53. //社区加入人数统计(单位千人)
  54. $data['group_members'] =$this->getTotalMonthGroup($group_id,$start,$end,$sort,$size) ;
  55. }
  56.  
  57. //问答活跃度(单位千条)
  58. $topic_id=Topic::where('im_organize_id',$item_id)->value('id');
  59. $questions_id=QuestionTopic::where('topic_id',$topic_id)->pluck('question_id')->toArray();
  60. if(!$questions_id){
  61. $data['topic_answers']=0;
  62. }else{
  63. //话题问答人数(单位千人)
  64. $data['topic_answers'] =$this->getTotalMonthTopic($questions_id,$start,$end,$sort,$size) ;
  65. }
  66.  
  67. return $data;
  68. }
  69.  
  70. /**
  71. * 项目关注人数走势(单位千人)
  72. * @param int $item_id
  73. * @param $start
  74. * @param $end
  75. * @return mixed
  76. */
  77. public function getTotalMonthItem($item_id,$start,$end,$sort='%Y-%m',$size='month'){
  78.  
  79. // $arr = DB::select('select count(user_id)/1000 as "user_count",date_format(created_at,\'%y%m\') as month from user_item where im_organize_id='.$item_id.' group by date_format(created_at,\'%y%m\')');
  80.  
  81. $query = DB::table('user_item')
  82. ->select(DB::raw("count(user_id)/1000 as user_count,date_format(created_at,'$sort') as $size"))
  83. ->groupBy(DB::raw("date_format(created_at,'$sort')"))
  84. ->where('im_organize_id',$item_id)
  85. ->where('created_at','>',Carbon::parse($start))
  86. ->where('created_at','<',Carbon::parse($end))
  87. ->get();
  88.  
  89. return $query;
  90. }
  91.  
  92. /**
  93. * 社区加入人数统计(单位千人)
  94. * @param $group_id
  95. * @param $start
  96. * @param $end
  97. * @param string $month
  98. * @param string $size
  99. * @return mixed
  100. */
  101. public function getTotalMonthGroup($group_id,$start,$end,$sort='%Y-%m',$size='month'){
  102.  
  103. // $arr = DB::select('select count(user_id)/1000 as "user_count",date_format(created_at,\'%y%m\') as month from group_members where group_id='.$group_id.' group by date_format(created_at,\'%y%m\')');
  104.  
  105. $query = DB::table('group_members')
  106. ->select(DB::raw("count(user_id)/1000 as user_count,date_format(created_at,'$sort') as $size"))
  107. ->groupBy(DB::raw("date_format(created_at,'$sort')"))
  108. ->where('group_id',$group_id)
  109. ->where('created_at','>',Carbon::parse($start))
  110. ->where('created_at','<',Carbon::parse($end))
  111. ->get();
  112.  
  113. return $query;
  114. }
  115.  
  116. /**
  117. * 问答活跃度
  118. * @param $questions_id
  119. * @param $start
  120. * @param $end
  121. * @param string $sort
  122. * @param string $size
  123. * @return mixed
  124. */
  125. public function getTotalMonthTopic($questions_id,$start,$end,$sort='%Y-%m',$size='month'){
  126.  
  127. // $arr = DB::select('select count(user_id)/1000 as "user_count",date_format(created_at,\'%y%m\') as month from group_members where group_id='.$group_id.' group by date_format(created_at,\'%y%m\')');
  128.  
  129. $query = DB::table('answers')
  130. ->select(DB::raw("count(id)/1000 as answers_count,date_format(created_at,'$sort') as $size"))
  131. ->groupBy(DB::raw("date_format(created_at,'$sort')"))
  132. ->whereIn('questions_id',$questions_id)
  133. ->where('created_at','>',Carbon::parse($start))
  134. ->where('created_at','<',Carbon::parse($end))
  135. ->get();
  136.  
  137. return $query;
  138. }

laravel 统计数据的更多相关文章

  1. sql不重复的查找统计数据(经典)

    例表如下: 表名:MYTEST TID    COL1    COL2     COL3 1           1           A            A2           1     ...

  2. (转载)MySQL 统计数据行数 Select Count

    (转载)http://www.5idev.com/p-php_mysql_select_count.shtml 统计数据行数 SELECT COUNT() FROM 语法用于从数据表中统计数据行数. ...

  3. mysql按月,按日分组统计数据

    group by DATE_FORMAT(createtime,'%Y-%m');//按月统计数据 group by DATE_FORMAT(createtime,'%Y-%m-%d');//按天统计 ...

  4. HDU 2017 一系列统计数据

    一系列统计数据 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Su ...

  5. Oracle 收集统计数据

    查看最新用户表统计信息 select owner,table_name,last_analyzed from dba_tables where owner not like '%SYS%' order ...

  6. 统计数据方面SQL与HQL

    因为HQL是面向对象的,所以对于统计数据方面使用HQL时不合适的,其实HQL最终还是会转化成SQL语句,项目里使用HQL语句应该是为了标准规范化. 统计的数据:同一个表,同一个字段,不同属性,统计不同 ...

  7. Pandas日期数据处理:如何按日期筛选、显示及统计数据

    前言 pandas有着强大的日期数据处理功能,本期我们来了解下pandas处理日期数据的一些基本功能,主要包括以下三个方面: 按日期筛选数据 按日期显示数据 按日期统计数据 运行环境为 windows ...

  8. laravel 查询数据返回的结果

    laravel查询数据返回的结果 在插入数据库的时候,发现查询数据返回的结果是一个对象;即使是空数据 返回的不是true或者false 那么要判断该结果是否查询有结果 该如果呢? 学习源头: http ...

  9. MySQL实现按天统计数据的方法

    一.首先生成一个日期表,执行SQL如下: CREATE TABLE num (i int); ), (), (), (), (), (), (), (), (), (); CREATE TABLE i ...

随机推荐

  1. java 弹出选择目录框(选择文件夹),获取选择的文件夹路径

    java 弹出选择目录框(选择文件夹),获取选择的文件夹路径 java 弹出选择目录框(选择文件夹),获取选择的文件夹路径:int result = 0;File file = null;String ...

  2. 人人中的 shiro权限管理 简单说明

    maven  shiro包的引用路径 :C:\Users\yanfazhongxin\.m2\repository\org\apache\shiro\shiro-core\1.3.2\shiro-co ...

  3. 解释下面URL

    解释下面URL各部分的含义 a.duke.csc.villanova.edu/jss/examles.html duke是计算机名,该计算机属于villanova.edu域的csc子域.edu是最高级 ...

  4. 【转载】NeurIPS 2018 | 腾讯AI Lab详解3大热点:模型压缩、机器学习及最优化算法

    原文:NeurIPS 2018 | 腾讯AI Lab详解3大热点:模型压缩.机器学习及最优化算法 导读 AI领域顶会NeurIPS正在加拿大蒙特利尔举办.本文针对实验室关注的几个研究热点,模型压缩.自 ...

  5. oracle 清理跟踪文件trc,trm

    oracle的日志文件有以下几种: 警告日志,trace日志,audit日志,redo日志,归档日志 a.警告日志:也就是alert log,使用初始化参数 show parameter backgr ...

  6. Learning Invariant Deep Representation for NIR-VIS Face Recognition

    查找异质图像匹配的过程中,发现几篇某组的论文,都是关于NIR-VIS的识别问题,提到了许多处理异质图像的处理方法,网络结构和idea都很不错,记录其中一篇. 其余两篇: Wasserstein CNN ...

  7. GeoDesc: Learning Local Descriptors by Integrating Geometry Constraints

    这篇论文提出了一种新的局部描述子学习方法,有一些点值得学习,记录下来以供参考.文章中涉及了一些3D reconstruction.structure from 的知识,不是很了解,所以理解可能有偏颇. ...

  8. Python3-socket网络知识储备

    本文参考文章:http://www.cnblogs.com/linhaifeng/articles/6129246.html 计算机基础知识 客户端软件基于网络发送一条信息给服务端软件,流程是: 1. ...

  9. 查询tensorflow中的函数用法

    一下均在ubuntu环境下: (1)方法一,使用help()函数: 比如对于tf.placeholder(),在命令行中输入import tensorflow as tf , help(tf.plac ...

  10. Node.js的单元测试框架初体验

    Mocha是一个功能丰富的JavaScript测试框架,运行在node.js平台和浏览器端,使异步测试变得简单和有趣.Mocha测试是串行的,允许灵活和准确的报告,同时将未捕获的异常映射到相应的测试用 ...