having 语法

ads
SQL数据分析8:HAVING语句的用法

关注回复“8”获取SQL必知必会


接着上一节,我们学习了数据聚合以及相关的函数用法,今天我们来讲讲聚合后的结果如何过滤。

基于之前运行的结果,我们使用SELECT COUNT语句、AVG函数、WHERE过滤语句以及GROUP BY数据聚合,统计出我们想要的结果,计算出每一位供应商售价小于30的产品平均单价。

在此基础上,我们遇到了新的需求,要求筛选出产品平均单价小于20的供应商。

也就是说,要基于数据聚合结果进行过滤,我们之前学过的核心语句是WHERE,现在是否可使用呢?我们可以试验一下:

此时,系统报错,说明用WHERE来过滤聚合之后的数据是行不通的,语句中已经出现了1WHERE在聚合之前,为了分清楚过滤的执行顺序,我们要用到新的过滤语句HAVING


HAVING子句的定义:

SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与合计函数一起使用。


HAVING子句的语法:

SELECT 列名称,aggregate_function列名称

FROM 表名称

WHERE 列名称 运算符 值

GROUP BY 列名称

HAVING 自定义聚合类别 运算符 值


注释:Aggregate 函数的操作面向一系列的值,并返回一个单一的值。


实际操作

需求:列出平均单价大于20的供应商号码。

这个需求是基于前面的结果,过滤出平均单价>20的数据,此时我们要用到HAVING子句进行聚合后的过滤。如下图所示:

然后点击运行按钮,我们可以得到:

此时我们得到返回的结果,准确地统计了聚合之后平均单价>20的供应商号码,达成需求。



举一反三:

如果没有WHERE语句的过滤,只要是聚合后的过滤,都要用HAVING来执行。

需求:查找出平均价格介于2030之间的供应商号码。如下所示:

此时我们可以看到,虽然聚合数据之前,没有WHERE语句,只要是出现在GROUP BY后面的过滤,只能用HAVING来执行。我们可以得出结果:

至此,我们可以总结出WHEREHAVING的区别。


知识点

最后,让我们来回顾一下SQL核心语句的构成及执行顺序

 温馨提示

在过滤语句中,where只能用在数据源,不能用在聚合数据之后,HAVING用在聚合数据的过滤。如下图所示:

 

千万不要弄错咯~

SQL数据分析的学习,贵在坚持,切忌三天打鱼两天晒网,希望我们都能利用SQL分析工具,早点实现我们的业务目标。

关注回复“8”获取SQL必知必会



最后编辑于:2024/1/16 拔丝英语网

admin-avatar

英语作文代写、国外视频下载

高质量学习资料分享

admin@buzzrecipe.com