如何在 SQL 中使用having和where

分类:编程技术 时间:2024-02-20 15:28 浏览:0 评论:0
0
本文将详细讲解SQL中如何使用having和where。文章内容质量很高,分享给大家,作为参考。希望您看完本文后对相关知识有一定的了解。

“Where”是一个约束语句。使用Where 来约束数据库中的数据。 Where在结果返回之前生效,Where中不能使用聚合函数。

“Having”是过滤语句,是查询返回结果集后对查询结果进行的过滤操作。聚合函数可以用在having中。

聚合函数,基本的SQL函数,聚合函数对一组值执行计算并返回单个值。除 COUNT 之外的聚合函数忽略空值。聚合函数通常与 SELECT 语句的 GROUP BY 子句一起使用。

Transact-SQL编程语言提供s如下聚合函数:

1.AVG返回指定组内的平均值,空值被忽略。

示例:按prd_no从销售组中选择prd_no,avg(qty)

2. COUNT 返回指定组中的项目数。

示例:从 sales 中选择 count(prd_no)

3. MAX 返回指定数据的最大值。

示例:按prd_no从销售组中选择prd_no,max(qty)

4。 MIN 返回指定数据的最小值。

示例:select prd_no,min(qty) from sales group by prd_no

在讲区别之前,首先要介绍GROUP BY子句,在讲GROUP子句之前,我们先来说说“聚合函数”——SQL语言中的一个特殊函数。例如SUM、COUNT、MAX、AVG等。这些函数与其他函数的根本区别在于它们一般对多条记录进行操作。例如:

SELECT SUM(population) FROM vv_t_bbc ;

这里的SUM作用于所有返回记录的population字段。结果是查询只返回一个结果,即所有国家的总人口。

通过使用 GROUP BY 子句,您可以使 SUM 和 COUNT 函数处理属于一个组的数据。当指定 GROUP BY 区域时,只有属于同一区域的一组数据才会返回行值。也就是说表中除region之外的所有字段只能通过SUM、COUNT等方式进行聚合,函数运算后返回一个值。

下面我们来谈谈“HAVING”和“WHERE”:

HAVING子句允许我们在分组后过滤每组数据,而WHERE子句则在聚合前过滤记录。也就是说,它作用在GROUP BY子句和HAVING子句之前; HAVING子句过滤聚合后的组记录。

让我们通过具体的例子来理解GROUP BY和HAVING子句:

SQL 示例:

1.显示各地区总人口和总面积的结果:

SELECT Region, SUM(population), SUM(area)FROM bbcGROUP BY Region

首先将返回的记录按区域划分为多个组,这就是GROUP BY的字面意思。分组后,使用聚合函数对每组中的不同字段(一条或多条记录)进行操作。

2.显示各地区的总人口和总面积。仅显示人口超过 1,000,000 的地区。

SELECT 区域、SUM(人口)、SUM(区域)FROM bbcGROUP BY 区域HAVING SUM(人口)>1000000

[注] 这里我们不能使用where来过滤超过1,000,000的区域,因为表中不存在这样的记录。

相反,HAVING 子句允许我们将每组数据过滤成组。

ps:如果想根据后面的字段排序sum,你可以添加: order by sum(population) desc/asc

我在这里分享一下 SQL 中如何使用having以及where。希望以上内容能够对大家有所帮助,可以学到更多的知识。如果您觉得文章不错,可以分享出去,让更多人看到。

1. 本站所有资源来源于用户上传或网络,仅作为参考研究使用,如有侵权请邮件联系站长!
2. 本站积分货币获取途径以及用途的解读,想在本站混的好,请务必认真阅读!
3. 本站强烈打击盗版/破解等有损他人权益和违法作为,请各位会员支持正版!
4. 编程技术 > 如何在 SQL 中使用having和where

用户评论