Having 子句和 Group By 子句的区别


SQL 是一种语言,在 Select 语句中包含不同类型的子句,例如:

  • Where
  • Group by
  • Having
  • Order by

这些子句用于检索值、排序、分组以及执行许多其他操作。本文将讨论 Having 子句和 Group By 子句之间的区别。

什么是 Having 子句?

Having 子句 用于根据条件过滤行组,这些条件通常包括聚合函数。它位于 SQL 查询中的 GROUP BY 子句之后。与 WHERE 子句不同(WHERE 子句在进行任何分组之前过滤行),HAVING 子句根据聚合函数过滤组。

通常与 HAVING 子句一起使用的聚合函数如下:

  • MAX
  • MIN
  • COUNT
  • SUM
  • AVG

Having 子句的语法

SELECT column_name(s) FROM table_name WHERE condition GROUP BY column_name(s) HAVING condition ORDER BY column_name(s);

Having 子句的示例

下表将用于 Having 子句的示例。表名为 Department,使用 Create Table 语句创建。

Create Table Department ( Department varchar (255), Salary (int) )

现在,我们将使用 Insert into 语句插入值。

Insert into Department (Department, Salary) Values ("HR", 24,000), ("Inventory", 40,000), ("Sales", 45,000), ("IT", 50,000), ("Accounts", 24,000) )
部门 薪资
人力资源 24,000
库存 40,000
销售 45,000
IT 50,000
财务 24,000
Select d.Department, AVG(Salary) From Department d Group by d.Department Having AVG(s.Salary) > 10,000

什么是 Group by 子句?

Group by 子句 是一种子句,其结果包含使用一个或多个列进行分组的行。结果以组的形式呈现。Group by 子句包含在 Select 语句中以获取结果。

Group by 子句的语法

Group by 子句的语法如下:

SELECT column_name(s) FROM table_name WHERE condition GROUP BY column_name(s) ORDER BY column_name(s);

Group by 子句的示例

Group by 子句的示例如下:

这里有一个名为 Customers 的表,我们将使用 Create Table 语句创建它。

Create Table Customers ( Customer ID int, Customer Name varchar (255), Country varchar (255) )

现在,我们将使用 Insert into 语句在 Customers 表中插入值。

Insert Into Customers (Customer ID, Customer Name, Country) Values (1, "Elizabeth", "Belgium"), (2, "Victoria", "Canada"), (3, "James", "USA"), (4, "Ahmed", "Yemen"), (5, "Joseph", "Ukraine"), (6, "Antonio", "Belgium")
客户 ID 客户姓名 国家
1 伊丽莎白 比利时
2 维多利亚 加拿大
3 詹姆斯 美国
4 艾哈迈德 也门
5 约瑟夫 乌克兰
6 安东尼奥 比利时
Select count (Customer ID), country from customers group by country

Explore our latest online courses and learn new skills at your own pace. Enroll and become a certified expert to boost your career.

Group by 子句和 Having 子句的区别

Group by 子句和 Having 子句之间的区别可以在下表中找到:

Having 子句 Group By 子句
Having 子句用于通过添加一些额外条件来获取结果。 Group By 子句是 Select 语句的一部分,用于从表中提取值。这些值根据列或行进行分组。
Having 子句必须与 Group By 子句一起使用。 Group By 子句可能包含或不包含 Having 子句。
聚合函数是 Having 子句的一部分。 聚合函数不能包含在 Group By 子句中。
可以在查询中添加一些条件来限制结果。 输出以行或列组的形式提供。

结论

Group by 子句和 Having 子句与 Select 语句一起使用,以检索特定行作为值。Group by 子句用于根据列或行检索一组行。Having 子句不能在没有 Group by 子句的情况下使用。Having 子句用于添加一些特定条件来限制输出。

关于 Group Clause 与 Having Clause 的常见问题

1. Having 子句可以独立使用吗?

不可以!Having 子句不能独立使用。它必须与 Group by 子句一起使用。Having 子句限制了要使用 Group by 子句检索的结果。在 Having 子句中添加了一些条件来限制输出。

2. Group by 子句的语法是什么?

Group by 子句的语法如下所示

SELECT column_name(s) FROM table_name WHERE condition GROUP BY column_name(s) ORDER BY column_name(s);

3. Having 子句的语法是什么?

Having 子句的语法如下:

SELECT column_name(s) FROM table_name WHERE condition GROUP BY column_name(s) HAVING condition ORDER BY column_name(s);

4. Having 子句可以与 Where 子句一起使用吗?

可以!Having 子句可以与 Where 子句一起使用。

5. 我们可以在 Having 子句中使用哪些聚合函数?

与 Having 子句一起使用的聚合函数有:

  • MAX
  • SUM
  • AVG

更新于: 2024-07-24

245 次浏览

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告