巧妙的运用group,count,order有利于统计

简介:
$aAwardMem = $this->dao_raward->getAwardAndMem($where,array('award_cat asc','award_level asc'),false,false,false,'award_cat,award_level,count(id) as count',false,array('award_cat','award_level'));

// w h e r e = f a l s e , order = 'id ASC',  p a g e s i z e = f a l s e , offset = false,  c o u n t = f a l s e , from = false,  j o i n = f a l s e , group = false

这里先按照award_cat排序,再按照award_level排序。

完了之后,对award_cat进行group操作,cat是类别,和award_level进行group操作。

这样就将cat,level剥离出来了。

成了一小组,一小组的数据,并且是有序的数据。

最后获取自己想要的字段award_cat,award_level,以及他们的各小组的数量。count(id)。

 

能够灵活的运用好他们,可以省去很多php的逻辑处理。

数据如下:

复制代码
Array
(
    [0] => Array
        (
            [award_cat] => 1
            [award_level] => 1
            [count] => 5
        )

    [1] => Array
        (
            [award_cat] => 2
            [award_level] => 1
            [count] => 11
        )

    [2] => Array
        (
            [award_cat] => 2
            [award_level] => 2
            [count] => 6
        )

    [3] => Array
        (
            [award_cat] => 2
            [award_level] => 3
            [count] => 7
        )

    [4] => Array
        (
            [award_cat] => 2
            [award_level] => 4
            [count] => 10
        )

    [5] => Array
        (
            [award_cat] => 2
            [award_level] => 5
            [count] => 10
        )

    [6] => Array
        (
            [award_cat] => 2
            [award_level] => 6
            [count] => 9
        )

    [7] => Array
        (
            [award_cat] => 2
            [award_level] => 7
            [count] => 7
        )

    [8] => Array
        (
            [award_cat] => 3
            [award_level] => 2
            [count] => 5
        )

    [9] => Array
        (
            [award_cat] => 4
            [award_level] => 3
            [count] => 5
        )

    [10] => Array
        (
            [award_cat] => 5
            [award_level] => 4
            [count] => 4
        )

    [11] => Array
        (
            [award_cat] => 6
            [award_level] => 6
            [count] => 6
        )

)


本文转自TBHacker博客园博客,原文链接:http://www.cnblogs.com/jiqing9006/p/3796500.html,如需转载请自行联系原作者
相关文章
|
SQL 关系型数据库 MySQL
使用索引消除group by 排序
ySQL数据库在使用group by查询时默认会进行排序,有时候我们并不需要这种排序,消除这种排序有两种方式,本文介绍其中一种,即使用索引消除排序,这种方式还有一个附加的好处,就是避免临时表的创建。
666 0
|
6月前
|
数据库
count(1)、count(*)、count(column)的含义、区别、执行效率
总之,`count(1)` 和 `count(*)` 通常会更常用,因为它们的执行效率较高,不涉及对具体列值的处理。而 `count(column)` 适用于统计特定列中的非空值数量。在实际使用时,可以根据情况选择适合的方式。 买CN2云服务器,免备案服务器,高防服务器,就选蓝易云。百度搜索:蓝易云
91 0
|
SQL Oracle 关系型数据库
【SQL开发实战技巧】系列(十五):查找最值所在行数据信息及快速计算总和百之max/min() keep() over()、fisrt_value、last_value、ratio_to_report
本篇文章讲解的主要内容是:***计算部门中那个工资等级的员工最多、通过返回部门10最大工资所在行的员工名称小案例来讲解max/min() keep() over()、通过查询工资最高的人小案例来介绍fisrt_value、last_value、通过计算各个部门的工资合计以及各个部门合计工资占总工资的比例小案例来介绍如何计算百分比及ratio_to_report分析函数的使用***
【SQL开发实战技巧】系列(十五):查找最值所在行数据信息及快速计算总和百之max/min() keep() over()、fisrt_value、last_value、ratio_to_report
|
SQL 数据挖掘 Python
SQL练习:2(简单)+1(中等),常规题(group by\order by\avg...)
SQL练习:2(简单)+1(中等),常规题(group by\order by\avg...)
202 0
SQL练习:2(简单)+1(中等),常规题(group by\order by\avg...)
|
SQL 监控 数据库
网站流量日志分析--统计分析--分组 topN--row_number over 函数使用|学习笔记
快速学习网站流量日志分析--统计分析--分组 topN--row_number over 函数使用
268 0
网站流量日志分析--统计分析--分组 topN--row_number over 函数使用|学习笔记
九、提高group by语句的效率
九、提高group by语句的效率
317 0
|
索引 SQL
Select Count 聚合函数三种不同写法区别与效率性能比较
Select Count 聚合函数三种不同写法区别与效率性能比较
486 0
Select Count 聚合函数三种不同写法区别与效率性能比较
|
关系型数据库 MySQL 测试技术
论证select count(*)和select count(1)
论证select count(*)和select count(1)
126 0
|
SQL NoSQL 关系型数据库
一次 group by + order by 性能优化分析
我的个人博客 https://mengkang.net/1302.html 最近通过一个日志表做排行的时候发现特别卡,最后问题得到了解决,梳理一些索引和MySQL执行过程的经验,但是最后还是有5个谜题没解开,希望大家帮忙解答下 主要包含如下知识点 用数据说话证明慢日志的扫描行数到底是如何统计出来的 从 group by 执行原理找出优化方案 排序的实现细节 gdb 源码调试 背景 需要分别统计本月、本周被访问的文章的 TOP10。
16297 0
下一篇
无影云桌面