PHP 统计数据功能 有感

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介:

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

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

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

一般情况下,sql处理后得到的数据,还要通过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来处理获取,其中变量命名要清晰,这样也有利于阅读代码。

复制代码
$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 -->


本文转自TBHacker博客园博客,原文链接:http://www.cnblogs.com/jiqing9006/p/4944946.html,如需转载请自行联系原作者
相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
20天前
|
JSON 自然语言处理 前端开发
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
119 72
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
|
2月前
|
运维 JavaScript 应用服务中间件
os-copilot安装与多项功能测评,帮助开发人员PHP环境排查问题
本文介绍了OS Copilot在ECS上 Alibaba Cloud Linux的安装与使用,并对其多项参数进行了功能测评。OS Copilot是为操作系统提供智能化辅助的工具,支持自动化任务、智能推荐、故障排查等功能。安装时需检查是否已安装(`rpm -q os-copilot`),若未安装则用`yum install os-copilot`命令安装,并配置AccessKey信息连接阿里云服务。通过测试不同参数命令,如`-t`参数,展示了其自动化执行和智能生成回答的能力,显著提升运维效率。
os-copilot安装与多项功能测评,帮助开发人员PHP环境排查问题
|
8天前
|
Oracle 关系型数据库 MySQL
【YashanDB知识库】php查询超过256长度字符串,数据被截断的问题
本文分析了YashanDB中PHP通过ODBC查询数据时出现的数据截断问题,表现为超过256字节的数据被截断,以及isql工具无法显示超过300字节长度的数据。问题根源在于YashanDB的ODBC驱动仅支持单次查询,且PHP扩展库默认缓冲区限制。解决方案包括改用PHP ODBC扩展库而非PDO_ODBC,以及调整isql代码逻辑以支持循环取数或一次性读取完整数据。文章还提供了具体代码示例和规避方法,适用于23.2.4.14及更早版本。
【YashanDB知识库】php查询超过256长度字符串,数据被截断的问题
|
18天前
|
数据库连接 PHP 数据库
【YashanDB知识库】PHP使用ODBC驱动无法获取长度为256char以上的数据
【YashanDB知识库】PHP使用ODBC驱动无法获取长度为256char以上的数据
|
18天前
|
数据库连接 PHP 数据库
【YashanDB知识库】PHP使用ODBC使用数据库绑定参数功能异常
【YashanDB知识库】PHP使用ODBC使用数据库绑定参数功能异常
|
18天前
|
PHP 数据库
【YashanDB知识库】PHP使用OCI接口使用数据库绑定参数功能异常
【YashanDB知识库】PHP使用OCI接口使用数据库绑定参数功能异常
|
1月前
|
Oracle 关系型数据库 MySQL
【YashanDB 知识库】php 查询超过 256 长度字符串,数据被截断的问题
php 查询超过 256 字节数据,显示被截断:yashandb 的 odbc 驱动接口 SQLGetData 现在只支持单次查询,不支持多次取数据的操作。 isql 显示不出来,isql 工具最大只查询 300 长度的数据,超过了该长度未正常显示。
|
3月前
|
移动开发 小程序 前端开发
使用php开发圈子系统特点,如何获取圈子系统源码,社交圈子运营以及圈子系统的功能特点,圈子系统,允许二开,免费源码,APP 小程序 H5
开发一个圈子系统(也称为社交网络或社群系统)可以是一个复杂但非常有趣的项目。以下是一些关键特点和步骤,帮助你理解如何开发、获取源码以及运营一个圈子系统。
215 4
|
4月前
|
数据采集 JSON JavaScript
如何通过PHP爬虫模拟表单提交,抓取隐藏数据
本文介绍了如何使用PHP模拟表单提交并结合代理IP技术抓取京东商品的实时名称和价格,特别是在电商大促期间的数据采集需求。通过cURL发送POST请求,设置User-Agent和Cookie,使用代理IP绕过限制,解析返回数据,展示了完整代码示例。
如何通过PHP爬虫模拟表单提交,抓取隐藏数据
|
4月前
|
缓存 NoSQL PHP
Redis作为PHP缓存解决方案的优势、实现方式及注意事项。Redis凭借其高性能、丰富的数据结构、数据持久化和分布式支持等特点,在提升应用响应速度和处理能力方面表现突出
本文深入探讨了Redis作为PHP缓存解决方案的优势、实现方式及注意事项。Redis凭借其高性能、丰富的数据结构、数据持久化和分布式支持等特点,在提升应用响应速度和处理能力方面表现突出。文章还介绍了Redis在页面缓存、数据缓存和会话缓存等应用场景中的使用,并强调了缓存数据一致性、过期时间设置、容量控制和安全问题的重要性。
90 5