数据库-----DQL 单表查询(二)

一、分组函数

(1)5种分组函数及其基本用法

count 计数

sum 求和

avg 平均值

max 最大值

min 最小值

注意:所有的分组函数都是对“某一组”数据进行操作的。

           分组函数也叫多行处理函数,即输入多行,最终输出结果为1行。

分组函数会自动忽略NULL。

单行处理函数:输入一行,输出一行

注意:所有数据库都是这样规定的,只要有NULL参与的运算结果一定是NULL。

空处理函数:ifnull()

ifnull(可能为null的数据,被当做什么处理):属于单行处理函数,可以对函数进行预处理

(2)count(*)count(具体的某个字段)有什么区别?

          count(*)统计总计数条数;count(具体的某个字段)统计的是该字段当中不为NULL的数据总数。

(3)group byhaving

group by : 按照某个字段或者某些字段进行分组

having : 是对分组之后的数据进行再次过滤

案例:找出每个工作岗位的最高薪资。

注意:分组函数一般会和 group by 联合使用,并且任何一个分组函数都是在group by 语句执行结束之后才会执行。当一条sql语句没有group by 的时候,整张表的数据会自成一组。

 虽然上述语句在mysql中可以执行,但明显结果是错误的,没有意义的。当一条语句中有group by 的话,select 后面只能跟分组函数和参与分组的字段。

案例:找出每个部门的最高薪资,要求显示薪资大于2900 的数据。

 having 过滤效率较低,where 过滤效率高,建议能够使用where的优先使用where。

案例: 找出每个部门的平均薪资,要求显示薪资大于2000的数据。

(4)分组函数不可以直接使用在where子句当中。

       group by 是在 where 执行之后才会执行的。

 (5)多个字段联合分组

案例:找出每个部门不同工作岗位最高薪资。

二、完整的DQL语句

语法结构:

select ... from ... where ... group by ... having ... order by ...

三、查询结果的去重

 distinct 关键字去除重复记录。distinct 只能出现在所有字段的最前面,表示后面所有字段联合起来去重。

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值