巧妙的运用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查询时默认会进行排序,有时候我们并不需要这种排序,消除这种排序有两种方式,本文介绍其中一种,即使用索引消除排序,这种方式还有一个附加的好处,就是避免临时表的创建。
692 0
|
8月前
|
数据库
count(1)、count(*)、count(column)的含义、区别、执行效率
总之,`count(1)` 和 `count(*)` 通常会更常用,因为它们的执行效率较高,不涉及对具体列值的处理。而 `count(column)` 适用于统计特定列中的非空值数量。在实际使用时,可以根据情况选择适合的方式。 买CN2云服务器,免备案服务器,高防服务器,就选蓝易云。百度搜索:蓝易云
111 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...)
208 0
SQL练习:2(简单)+1(中等),常规题(group by\order by\avg...)
|
SQL 算法 搜索推荐
order by是如何工作的?
大家好前面我们了解了count(*)的一些实现方式。今天我们介绍一下order by的实现方式以及内部的涉及到的知识点。
order by是如何工作的?
|
索引 SQL
Select Count 聚合函数三种不同写法区别与效率性能比较
Select Count 聚合函数三种不同写法区别与效率性能比较
513 0
Select Count 聚合函数三种不同写法区别与效率性能比较
|
关系型数据库 数据库
都2020年了,你还不知道count(1)和count(*)谁效率更高吗?
今天公司的一个需求需要统计一个数据库中表的行数有多少,二话不说当然就直接用count()这个聚合函数,以前经常听到一种说法说count(1)的效率比count(*)要高,于是测试了一下count(1)和count(*)的速度差距,发现两者的查询速度很接近,甚至count(*)要更快一些,于是就有了这篇文章。
|
关系型数据库 MySQL 数据库
数据库面试题【十九、count(字段) &count(主键 id) &count(1)&count(*)的区别】
数据库面试题【十九、count(字段) &count(主键 id) &count(1)&count(*)的区别】
180 0
|
关系型数据库 MySQL 测试技术
论证select count(*)和select count(1)
论证select count(*)和select count(1)
133 0