分组函数与子查询

分组函数
概念:分组函数作用于一组数据,并对一组数据返回一个值。
组函数类型
可以对数值型数据使用avg和 sum函数。
可以对任意数据类型的数据使用 min和 max函数。
count(*) 返回表中记录总数,适用于任意数据类型。
count(expr) 返回expr不为空的记录总数。

1.常用的五个组函数
(1)平均值avg(数值型数据)
(2)合计sum(数值型数据)
(3)总行数count(任意类型数据)
(4)最大值max(任意类型数据)
(5)最小值min(任意类型数据)
在这里插入图片描述

2.组函数忽略空值与在组函数使用NVL函数。
在这里插入图片描述
(1)组函数忽略空值是把空值直接排除掉,不参与组函数的运算中,
组函数忽略空值,则平均值为(300+500+1400+0)/4=550
(2)若在组函数中使用NVL函数把空值转为0,即可进行运算!
则平均值为(300+500+1400+0+0+…+0)/14= 157.142857142857
在这里插入图片描述
3.group by 子句语法
可以使用group by 子句将表中的数据分成若干组
在select列表中所有未包含在组函数中的列都应该包含在group by子句中。
所有包含于select列表中,而未包含于组函数中的列都必须包含于group by子句中。
包含在group by子句中的列不必包含在select列表中
在这里插入图片描述
4.having过滤分组
不能在 where子句中使用组函数。
可以在 having子句中使用组函数。
使用 having过滤分组的要求:
(1)行已经被分组。
(2)使用了组函数。
(3)满足having子句中条件的分组将被显示。
在这里插入图片描述

子查询
概念
子查询不返回任何行
子查询要包含在括号内。
将子查询放在比较条件的右侧。
单行操作符对应单行子查询,多行操作符对应多行子查询。
首先执行子查询。再向主查询返回结果进行执行。
在查询时基于未知的值时,应使用子查询
子查询 (内查询) 在主查询之前一次执行完成。
子查询的结果被主查询(外查询)使用 。
相当于把一个表查询出来的值当条件再进行单表筛选查询
1.单行子查询
格式:select * from 表名where 表的列名 >(只返回一个值的子查询);
在这里插入图片描述
2.多行子查询
在这里插入图片描述
(1)在多行子查询中使用in 操作符;等于列表中的任意一个
格式:select * from 表名where表的列名in(返回多个值子查询);
在这里插入图片描述
(2)在多行子查询中使用any 操作符;和子查询返回的某一个值比较
格式:select * from 表名where表的列名< any(返回多个值子查询)
在这里插入图片描述
(3)在多行子查询中使用 all 操作符;和子查询返回的所有值比较
格式:select * from 表名where表的列名< all (返回多个值子查询)
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值