PHP实现的统计数据功能详解


Posted in PHP onDecember 06, 2016

本文实例讲述了PHP实现的统计数据功能。分享给大家供大家参考,具体如下:

统计,就是把基本的数据,整合起来。

用到sql的,有group by 功能,count功能,order by功能等等。

sql将收集的数据,进行统计分析。

一般情况下,sql处理后得到的数据,还要通过php的逻辑来进行整理。

以一定的格式,展示到前台。

一般都是以数组的方式展示,这也是数据结构的概念。

PHP实现的统计数据功能详解

看这张图片,基本想想结构大概为

{上线数,出单总数,核过总数,总人均,总核率,{(坐席人1,工号1,出单数1,发货数1,核单率1),(坐席人2,工号2,出单数2,发货数2,核单率2)}}

如果用php展示成上面的结构的话,就很好处理了。

首先通过sql获取初次处理的数据,

别小看这初次处理的数据,处理的好,会非常的便捷。

SELECT a.user,count(order_id) as subcount,b.passcount,c.full_name from vicidial_order a LEFT JOIN (SELECT user,count(order_id) as passcount from vicidial_order where time > UNIX_TIMESTAMP('2015-11-7') and user_group = 'TeamOne' and verifysta = 'Y' GROUP BY user ) b on a.user = b.user LEFT JOIN vicidial_users c on a.user = c.user where time > UNIX_TIMESTAMP('2015-11-7') and a.user_group = 'TeamOne' GROUP BY a.user ;

sql思路,归类订单表,以user来进行归类。

获取每个人,当天的订单提交总数count()。

还要获取每个人,订单通过审核的总数,通过where筛选。

然后关联查询其他相关数据。

PHP实现的统计数据功能详解

有了这些基本数据,其他的相关数据都能出来了。

通过php来处理获取,其中变量命名要清晰,这样也有利于阅读代码。

$select_sql = "SELECT a.user,count(order_id) as subcount,b.passcount,c.full_name from vicidial_order a LEFT JOIN (SELECT user,count(order_id) as passcount from vicidial_order where time > UNIX_TIMESTAMP('".$today."') and user_group = '".$user_group."' and verifysta = 'Y' GROUP BY user ) b on a.user = b.user LEFT JOIN vicidial_users c on a.user = c.user where time > UNIX_TIMESTAMP('".$today."') and a.user_group = '".$user_group."' GROUP BY a.user ";
$rows = mysqli_query( $db_conn, $select_sql );
$row_counts_list = mysqli_num_rows( $rows );
if ( $row_counts_list != 0 )
{
  $i = 0;
  while($rs = mysqli_fetch_assoc( $rows )) // mysqli_fetch_assoc 获取键值数据   mysqli_fetch_field 获取一条数据 mysqli_fetch_fields 获取多组数据  mysqli_fetch_row
  {
    $outData['list'][$i]['user'] = $rs['user'];
    $outData['list'][$i]['full_name'] = $rs['full_name'];
    $outData['list'][$i]['subcount'] = $rs['subcount'];
    $outData['list'][$i]['passcount'] = $rs['passcount'];
    $outData['list'][$i]['passrate'] = round(($rs['passcount']/$rs['subcount'])*100)."%";
    $outData['all_subcount'] += $rs['subcount'];
    $outData['all_passcount'] += $rs['passcount'];
    $i++;
  }
  $outData['all_passrate'] = round(($outData['all_passcount']/$outData['all_subcount'])*100)."%";
  $outData['online_count'] = $row_counts_list;
  $outData['average_subcount'] = round($outData['all_subcount']/$outData['online_count'],1);
}

其中outData就是要输出的数据结构类型。

Array
(
  [list] => Array
    (
      [0] => Array
        (
          [user] => 8001
          [full_name] => 魏硕磊
          [subcount] => 3
          [passcount] => 2
          [passrate] => 67%
        )
      [1] => Array
        (
          [user] => 8004
          [full_name] => 刘庆
          [subcount] => 2
          [passcount] => 2
          [passrate] => 100%
        )
      [2] => Array
        (
          [user] => 8005
          [full_name] => 章厚英
          [subcount] => 4
          [passcount] => 3
          [passrate] => 75%
        )
    )
  [all_subcount] => 9
  [all_passcount] => 7
  [all_passrate] => 78%
  [online_count] => 3
  [average_subcount] => 3
)

获取数据后,一切都好办了。

套入页面就可以了,然后自己再调试调试。

<!-- begin -->
<?php foreach ($outData as $k => $v) { ?>
<div class="col-xs-12 col-sm-6 widget-container-col ui-sortable">
  <div class="widget-box widget-color-blue">
    <div class="widget-header">
      <h5 class="widget-title bigger lighter">
        <i class="ace-icon fa fa-table"></i>
        【<?php echo $v['group_name'];?>】成绩表
      </h5>
    </div>
    <div class="widget-body">
      <div class="widget-main no-padding">
        <table>
        </table>
        <table class="table table-striped table-bordered table-hover">
          <thead style="text-align:center;font-size:16px">
            <tr>
              <td colspan="2">上线总人数:</td>
              <td colspan="3"><?php echo $v['stat']['online_count']?></td>
            </tr>
            <tr>
              <td colspan="2">出单总数:</td>
              <td style="color:red"><?php echo $v['stat']['all_subcount']?></td>
              <td >核过总数</td>
              <td style="color:red"><?php echo $v['stat']['all_passcount']?></td>
            </tr>
            <tr>
              <td colspan="2">总人均:</td>
              <td style="color:red"><?php echo $v['stat']['average_subcount']?></td>
              <td >总核率</td>
              <td style="color:red"><?php echo $v['stat']['all_passrate']?></td>
            </tr>
          </thead>
          <thead class="thin-border-bottom">
            <tr>
              <th>
                <i class="ace-icon "></i>
                坐席人
              </th>
              <th>
                <i class="ace-icon "></i>
                工号
              </th>
              <th>
                <i class="ace-icon "></i>
                出单数
              </th>
              <th>
                <i class="ace-icon "></i>
                发货数
              </th>
              <th>
                <i class="ace-icon "></i>
                核单率
              </th>
            </tr>
          </thead>
          <tbody>
            <?php foreach ($v['stat']['list'] as $listk => $listv) { ?>
            <tr>
              <td class=""><?php echo $listv['full_name']?></td>
              <td>
                <a href="#"><?php echo $listv['user']?></a>
              </td>
              <td class="">
                <a href="#"><?php echo $listv['subcount']?></a>
              </td>
              <td class=""><?php echo $listv['passcount']?></td>
              <td class=""><?php echo $listv['passrate']?></td>
            </tr>
            <?php }?>
            <tr style="color:red;font-size:16px">
                <td class=""colspan="2">总计</td>
                <td class=""><?php echo $v['stat']['all_subcount']?></td>
                <td class=""><?php echo $v['stat']['all_passcount']?></td>
                <td class=""><?php echo $v['stat']['all_passrate']?></td>
            </tr>
          </tbody>
        </table>
      </div>
    </div>
  </div>
</div>
<?php }?>
<!-- end -->

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
IIS6的PHP最佳配置方法
Mar 19 PHP
php 无限极分类
Mar 27 PHP
PHP 字符串编码截取函数(兼容utf-8和gb2312)
May 02 PHP
php中解析带中文字符的url函数分享
Jan 20 PHP
深入理解PHP中的Streams工具
Jul 03 PHP
开启PHP的伪静态模式
Dec 31 PHP
PHP实现对xml的增删改查操作案例分析
May 19 PHP
PHP针对伪静态的注入总结【附asp与Python相关代码】
Aug 01 PHP
PHP生成随机数的方法总结
Mar 01 PHP
php生成二维码不保存服务器还有下载功能的实现代码
Aug 09 PHP
PHP通过调用新浪API生成t.cn格式短网址链接的方法详解
Feb 20 PHP
laravel5.5安装jwt-auth 生成token令牌的示例
Oct 24 PHP
php+ajax简单实现全选删除的方法
Dec 06 #PHP
thinkPHP数据库增删改查操作方法实例详解
Dec 06 #PHP
thinkPHP中volist标签用法示例
Dec 06 #PHP
探究Laravel使用env函数读取环境变量为null的问题
Dec 06 #PHP
thinkphp中AJAX返回ajaxReturn()方法分析
Dec 06 #PHP
php中引用符号(&amp;)的使用详细介绍
Dec 06 #PHP
thinkPHP简单实现多个子查询语句的方法
Dec 05 #PHP
You might like
千呼万唤始出来,DOTA2勇士令状不朽宝藏Ⅱ现已推出
2020/08/25 DOTA
PHP Global变量定义当前页面的全局变量实现探讨
2013/06/05 PHP
PHP实现图片自动清理的方法
2015/07/08 PHP
浅析php静态方法与非静态方法的用法区别
2016/05/17 PHP
CI框架常用经典操作类总结(路由,伪静态,分页,session,验证码等)
2016/11/21 PHP
php实现微信分享朋友链接功能
2019/02/18 PHP
Laravel框架下载,安装及路由操作图文详解
2019/12/04 PHP
Yii框架小部件(Widgets)用法实例详解
2020/05/15 PHP
原生javaScript实现图片延时加载的方法
2014/12/22 Javascript
简介JavaScript中fixed()方法的使用
2015/06/08 Javascript
JS处理json日期格式化问题
2015/10/01 Javascript
微信端开发--登录小程序步骤
2017/01/11 Javascript
node学习记录之搭建web服务器教程
2017/02/16 Javascript
angular.js 路由及页面传参示例
2017/02/24 Javascript
JavaScript手风琴页面制作
2017/05/17 Javascript
Vue+Mock.js模拟登录和表格的增删改查功能
2018/07/26 Javascript
Vue 与 Vuex 的第一次接触遇到的坑
2018/08/16 Javascript
layer实现弹出层自动调节位置
2019/09/05 Javascript
layui prompt 设置允许空白提交的方法
2019/09/24 Javascript
KnockoutJS数组比较算法实例详解
2019/11/25 Javascript
在vue中实现echarts随窗体变化
2020/07/27 Javascript
[54:06]OG vs TNC 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
[46:42]DOTA2-DPC中国联赛正赛 Aster vs Magma BO3 第二场 3月5日
2021/03/11 DOTA
Sanic框架应用部署方法详解
2018/07/18 Python
Python matplotlib通过plt.scatter画空心圆标记出特定的点方法
2018/12/13 Python
django之导入并执行自定义的函数模块图解
2020/04/01 Python
Python定义函数实现累计求和操作
2020/05/03 Python
成人教育自我鉴定
2013/11/01 职场文书
铁路个人事迹材料
2014/01/30 职场文书
实验教师岗位职责
2014/02/13 职场文书
爱我中华演讲稿
2014/05/20 职场文书
2015年清明节演讲稿范文
2015/03/17 职场文书
教师岗位职责范本
2015/04/02 职场文书
社区服务理念口号
2015/12/25 职场文书
解决Jenkins集成SonarQube遇到的报错问题
2021/07/15 Java/Android
使用opencv-python如何打开USB或者笔记本前置摄像头
2022/06/21 Python