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
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容