php分组查询和聚合函数 数据显示的顺序

  // 分组查询和聚合函数

        // 分组查询 : 将指定字段中的数据,按照不同的具体数值,进行分组
        //           数据相同的分在一个分组中
        //           一个分组中存储多条数据,实际只显示条数据

        SELECT * FROM `user3` GROUP BY `dep`;

        mysql>         SELECT * FROM `user3` GROUP BY `dep`;
        +----+--------+------+------+------+-------+----------+
        | id | name   | age  | sex  | city | dep   | pay      |
        +----+--------+------+------+------+-------+----------+
        |  5 | Eric   |   23 | 保密  | 北京     | JAVA  |  9000.00 |
        |  1 | 王卓   |   21 | 保密   | 上海    | PHP   | 15000.00 |
        |  4 | 梁晓洁  |   17 | 女    | 北京     | UI/UE |  8000.00 |
        |  2 | Andy   |   27 | 男     | 广州     | WEB   |  9000.00 |
        +----+--------+------+------+------+-------+----------+

        当前是 按照 dep 字段的数据进行分组
        dep当中 数据相同的 会分在同一组别中存储
        显示默认只显示一条数据
            |  5 | Eric   |   23 | 保密  | 北京     | JAVA  |  9000.00 | 
            虽然只显示的是当天这一条数据,实际 在 dpe 是 java 的分组中 存储的是 所有 dep 是 java 的数据


        聚合函数是专门针对 分组中的数据 进行的 数据操作

        COUNT()     计算分组中的数据数据数量
        MIN()       计算分组中数据的最小值
        MAX()       计算分组中数据的最大值
        AVG()       计算分组中数据的平均值
        SUM()       计算分组中数据的总和


        查询每个部门的 平均薪资
        每个部门   按照 部门 `dep` 字段 分组查询  GROUP BY `dep`

        平均薪资   求 平均值 使用 AVG() 聚合函数 
                  薪资  AVG() 中的字段 是 存储薪资的字段 `pay`

        联合查询,需要设定在 SELECT 和 FROM 之前,作为查询内容执行,结果会显示在结果的表结构中
        SELECT 和 FROM 中还需要设定哪个字段,需要看项目需求

        SELECT `dep` , AVG(`pay`) FROM `user3` GROUP BY `dep`;

        求每个部门的平均年龄
        每个部门  按照 部门字段 `dep` 分组 
        平均      聚合函数 AVG()
        年龄      聚合函数()中写 年龄字段 `age`

        SELECT `dep` , AVG(`age`) FROM `user3` GROUP BY `dep`;


        求 每个城市 年龄 在 20-25岁之间 员工人数
        每个城市   按照城市字段分组  GROUP BY `city`
        员工人数   员工人数实际就是数据数量    
                   使用 聚合函数 COUNT() 
                   COUNT() 查询数据数量,一般写 `id` 字段
                   数据简单,不会重复
        年龄在 20 -25 岁之间  `age` >= 20 AND `age` <= 25
                             这是对于字段的约束条件,使用 WHERE 来设定

        先写 WHERE 再写 GROUP BY

        SELECT `city` , COUNT(`id`) as `人数` FROM `user3` WHERE `age` >= 20 AND `age` <= 25 GROUP BY `city`;
                

        显示 20-25岁员工人员数在 10人以上的城市信息
        新增约束条件  员工人数 > 10 
        员工人数 不是某个指定的字段 是 聚合函数的执行结果 
        聚合函数的执行结果,不能使用WHERE来约束,WHERE是约束字段数据的
        聚合函数的约束条件使用 HAVING 来执行
        HAVING 写在 GROUP BY 之后


        SELECT `city` , COUNT(`id`) as `人数` FROM `user3` 
        WHERE `age` >= 20 AND `age` <= 25 
        GROUP BY `city` 
        HAVING COUNT(`id`) > 10 ;


        查询部门最高薪资

        SELECT `dep` , MAX(`pay`) FROM `user3`
        GROUP BY `dep`; 


        查询部门20-25岁人员的最高薪资

        SELECT `dep` , MAX(`pay`) FROM `user3`
        WHERE `age` >= 20 AND `age` <= 25
        GROUP BY `dep`; 

        显示部门20-25岁人员的最高薪资 大于 20K的 部门

        SELECT `dep` , MAX(`pay`) FROM `user3`
        WHERE `age` >= 20 AND `age` <= 25
        GROUP BY `dep`
        HAVING MAX(`pay`) > 20000; 

        复杂查询也是由简单查询语句组合而成

        */
 
/*
            设定查询结果的排序方式

                查询结果,默认按照 id 主键值的 升序 排列

                查询结果,可以按照指定字段的 升序 或者 降序 排列

                SELECT * FROM `表名` ORDER BY `字段` 排序方式

                排序方式 : ASC 升序  默认值可以不写
                          DESC 降序 要设定就必须写
        
        
                按照年龄,从小到大显示员工信息

                SELECT * FROM `user3` ORDER BY `age` ;


                按照薪资排序 从大到小
                SELECT * FROM `user3` ORDER BY `pay` DESC;

                可以同时设定多个字段的排序方式
                先按照第一个字段的排序方式进行排序
                数据相同时,再按照第二个字段排序方式进行排序
                
                先按照 age 字段的 升序排列 
                age 数值相同时 再 按照 `id` 字段的升序排列
                SELECT * FROM `user3` ORDER BY `age` , `id` ;
右侧打赏一下 代码改变世界一块二块也是爱
原文地址:https://www.cnblogs.com/ht955/p/14108919.html