Mysql聚合函数

聚合函数又称分组函数   多行(一组)数据  返回一个结果

数据表

链接:https://pan.baidu.com/s/1dPitBSxLznogqsbfwmih2Q 
提取码:b0rp 
--来自百度网盘超级会员V5的分享

聚合函数会自动排除掉null字段

AVG SUM 适用于数值类型    

MIN MAX 适用于数值类型,字符串类型,日期时间类型的字段(或变量)

COUNT 作用:计算指定字段在查询结构中出现的个数

COUNT(*)  COUNT(1) COUNT(2) 查询的是总条数

COUNT(字段)  会排除掉null

AVG=SUM/COUNT

SQL优化的一个点:

统计表中数据 用COUNT(*)  COUNT(字段)  COUNT(1) 哪种效率更高????

如果使用的是MyISAM引擎,是没有区别的.因该引擎内部有计数器维护行数

如果使用的是Innodb引擎,COUNT(*)=COUNT(1)>COUNT(字段)

因MyISAM不支持事务,现在普遍用的都是Innodb引擎,因此COUNT(*)或者COUNT(1)效率更高

GROUP BY的使用

使用多个列分组

同样Oracle中也会报错

结论: SELECT中出现的非分组函数的字段必须声名在GROUP BY中.反之GROUP BY中的字段可以不出现在SELECT中,但是一般不出现的话 往往没有意义,不知道哪个是哪个

GROUP BY 在 FROM 后面   WHERE 后面 ORDER BY前面

新特性

GROUP BY 中使用 WITH ROLLUP

使用WITH ROLLUP关键字之后,在所有查询出的分组记录之后增加一条记录,该记录计算查询出的所有记录的总和,即统计记录数量

注意:当使用ROLLUP时候,不能同时使用ORDER BY进行结果排序,ROLLUP和ORDER BY互斥

注意 WHERE执行之前  GROUP BY 还没有执行

HAVING的使用   (用来过滤分组之后数据)

下面两种方式   推荐使用方式1  原因  方式1的执行效率高于方式2

当过滤条件中有聚合时,则过滤条件必须声明在HAVING中,当过滤条件没有聚合函数,则此过滤条件声明在WHERE和HAVING中都是可以的,但是建议放在WHERE中,效率更高

一般没有聚合的条件放在WHERE   有聚合过滤放在HAVING

WHERE与HAVING对比:HAVING适用范围更广

WHERE效率更高

SQL底层的执行过程

SELECT语句的完整结构

SQL语句的执行过程

执行顺序

聚合函数练习

1.where子句可否使用组函数进行过滤?   不可以

2.查询公司员工工资的最大值,最小值,平均值,总和

3.查询各job_id的员工人数

4.查询员工最高工资和最低工资的差距(DIFFERENCE)

5.查询各个管理者手下员工的最低工资,其中最低工资不能低于6000

6.查询所有部门的名字,location_id,员工数量和平均工资,并按平均工资降序

7.查询每个工种,每个部门的部门名,工种名和最低工资

相关推荐

  1. MYSQL学习——聚合函数

    2024-02-01 16:44:04       49 阅读
  2. MySQL 聚合函数

    2024-02-01 16:44:04       28 阅读
  3. MySql 常用的聚合函数

    2024-02-01 16:44:04       36 阅读
  4. mysql聚合函数andjson_object 例子

    2024-02-01 16:44:04       51 阅读
  5. MySQL 聚合函数解析与示例

    2024-02-01 16:44:04       52 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-01 16:44:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-01 16:44:04       100 阅读
  3. 在Django里面运行非项目文件

    2024-02-01 16:44:04       82 阅读
  4. Python语言-面向对象

    2024-02-01 16:44:04       91 阅读

热门阅读

  1. 超时引发的牛角尖一(hystrix概述)

    2024-02-01 16:44:04       50 阅读
  2. Python爬虫存储库安装

    2024-02-01 16:44:04       50 阅读
  3. 【C语言】【力扣】刷题小白的疑问

    2024-02-01 16:44:04       53 阅读
  4. 美国服务器地址和端口及密码

    2024-02-01 16:44:04       55 阅读
  5. 服务器托管与虚拟主机租用有哪些区别?

    2024-02-01 16:44:04       56 阅读
  6. footer置于页面最底部

    2024-02-01 16:44:04       48 阅读
  7. 【力扣hot100】刷题笔记Day1

    2024-02-01 16:44:04       54 阅读
  8. QT中一种隐蔽的死锁

    2024-02-01 16:44:04       51 阅读
  9. OpenGL程序管线对象 Program Pipeline Objects

    2024-02-01 16:44:04       42 阅读
  10. C++不能直接返回数组

    2024-02-01 16:44:04       44 阅读
  11. 算法训练营day19,二叉树8-2

    2024-02-01 16:44:04       56 阅读