分组函数与子查询
作者:互联网
分组函数
概念:分组函数作用于一组数据,并对一组数据返回一个值。
组函数类型
可以对数值型数据使用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 (返回多个值子查询)
标签:返回,函数,查询,分组,子句,与子,select 来源: https://blog.csdn.net/weixin_44564151/article/details/89606000