• 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` ;
    右侧打赏一下 代码改变世界一块二块也是爱
  • 相关阅读:
    HDU 1003——Max Sum(动态规划)
    HDU 2602 ——背包问题
    HDU 1850——Being a good boy
    HDU——2588 数论应用
    HDU1222——数论
    HDU1465——不容易系列之一(错排)
    URAL 2038 Minimum Vertex Cover
    772002画马尾
    CodeForces 19D Points
    The 2015 China Collegiate Programming Contest Game Rooms
  • 原文地址:https://www.cnblogs.com/ht955/p/14108919.html
Copyright © 2020-2023  润新知