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

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 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告