SQL进阶教程之1.4 HAVING子句

用法1:用having语句进行比较找出是否有缺失行
适用情况:数据行存在遗漏,需要找出遗漏数据
案例1:寻找缺失的编号

表seqtbl
比较数量和最大序号找缺失值

案例1.1 找到所有缺失编号的最小值
缺点:此种查询不全,不能覆盖最小缺失编号为1和存在null值的情况,两种情况下会报错

使用序号+1求缺失编号

用法2:用having语句进行子查询求众数
适用情况:平均值无法反应真实情况,数据集出现极大值或者极小值,需要用众数表示
案例:求出出现最多的收入

表graduates
求众数方法1
求众数方法2

用法3:用having语句进行子查询求中位数
适用情况: 平均值无法反应真实情况,数据集出现极大值或者极小值,需要用中位数表示
案例:求出收入的中位数

表graduates
多条件同时满足求中位数

用法4:查询不包含NULL 的集合
适用情况:当涉及到null的计算会更为复杂,需要将null部分排除掉,仅保留不含null的数据集合
案例:找出student表中日期不为null
的学院
区别:count(*)可以计算null的行,count(字段)不能计算null的行

表Student

用法5:关系除法运算
适用情况:需要从连接条件中排除某些条件时
案例:购物篮分析,筛选出商品完全相等的地区

表shopitems
表items
表shopitems与items左连接之后的结果
image.png

你可能感兴趣的:(SQL进阶教程之1.4 HAVING子句)