如何在 SQL 中使用 GROUP BY

17 Mar 2025 | 6 分钟阅读

在本 SQL 部分,您将学习 GROUP BY 关键字是什么以及如何在结构化查询语言中实现它。我们还将讨论如何将 GROUP BY 子句与 WHERE 子句一起使用。

什么是 GROUP BY?

GROUP BY 是一个 SQL 关键字,用于 SELECT 查询中,通过 SQL 函数按组排列同一列的相同值。

GROUP BY 子句的语法

我们可以在 GROUP BY 子句中使用表中的多个字段。我们必须用逗号分隔多个列的名称。

请按照以下步骤学习如何在 SQL 表中使用 GROUP BY 子句

  1. 创建简单的数据库和表。
  2. 插入数据到表中
  3. 在没有 GROUP BY 子句的情况下查看插入的数据。
  4. 使用 GROUP BY 子句。

步骤 1:创建简单的数据库和表

首先,您需要创建一个新的 SQL 数据库。

以下查询创建了 Hospital 数据库

现在,您需要使用以下 CREATE TABLE 语法创建一个新表

以下查询在 Hospital 数据库中创建了 Doctor_Info 表

步骤 2:将数据插入表中

现在,您需要使用以下语法将数据插入表中

以下查询插入了在 Hospital 工作的医生的记录

步骤 3:在没有 GROUP BY 的情况下查看表中的插入数据

以下查询以无序方式显示医生记录

上面 SELECT 查询的输出如下所示

Doctor_IDDoctor_NameDoctor_DiseaseDoctor_GenderDoctor_Country
1035JonesMalaria_Specialist男性 (Male)英国
1015MarryDiabities_Specialist女性 (Female)United State
1003HarryFever_Specialist男性 (Male)英国
1044艾拉Cancer_Specialist女性 (Female)United State
1025MoriaCorona_Specialist女性 (Female)欧洲

步骤 4:使用 GROUP BY 子句

以下 SQL 查询使用 GROUP BY 关键字列出每个国家/地区的医生人数

上面带有 ODER BY 的 SELECT 查询的输出显示在以下 Doctor 表中

输出

How to Use GROUP BY in SQL

GROUP BY 与 SQL ORDER BY 子句

我们也可以在 SQL SELECT 语句中使用 ORDER BY 关键字和 GROUP BY 子句。

GROUP BY 子句与 ORDER BY 子句的语法

GROUP BY 子句与 ORDER BY 子句的示例

以下查询在 School 数据库中创建了新的 Subject 表

以下 INSERT INTO 查询将记录插入 Subject 表

以下查询将 SQL ORDER BY 子句与 GROUP BY 一起使用

输出

How to Use GROUP BY in SQL

GROUP BY 子句与 MIN 函数

我们也可以在结构化查询语言的 GROUP BY 子句中使用 MIN 聚合函数。

Group BY 子句与 MIN 函数的语法

MIN 聚合函数与 GROUP BY 子句的示例

此示例以下面的 School_Stu_Details 表来说明 GROUP BY 子句与 MIN 聚合函数的概念

以下 INSERT INTO 语句插入了 School 学生的记录

以下查询仅以表格形式显示学生的记录


Stu_ID学生姓名 (Stu_Name)Stu_Subject学生年龄 (Stu_Age)学生分数 (Stu_Marks)
101Anuj英文2088
102拉曼 (Raman)数学2498
104Shyam印地语1992
107Vikash电脑2078
111Monu英文2165
114Jones印地语1893
121Parul数学2097
123Divya英文2189
128Hemant电脑2390
130Nidhi印地语2088
132Priya英文2299
138Mohit数学2192

以下查询显示了来自上面 School_Stu_Details 表的每个科目的学生最低分数

输出

Stu_SubjectMIN (Stu Marks)
英文65
数学92
印地语88
电脑78

GROUP BY 子句与 MAX 函数

我们也可以在结构化查询语言的 GROUP BY 子句中使用 MAX 聚合函数。

Group BY 子句与 MAX 聚合函数的语法

MAX 聚合函数与 GROUP BY 子句的示例

此示例以下面的 School_Stu_Details 表来说明 GROUP BY 子句与 SQL MAX 聚合函数的概念

以下 INSERT INTO 语句插入了 School 学生的记录

以下查询仅以表格形式显示学生的记录


Stu_ID学生姓名 (Stu_Name)Stu_Subject学生年龄 (Stu_Age)学生分数 (Stu_Marks)
101Anuj英文2088
102拉曼 (Raman)数学2498
104Shyam印地语1992
107Vikash电脑2078
111Monu英文2165
114Jones印地语1893
121Parul数学2097
123Divya英文2189
128Hemant电脑2390
130Nidhi印地语2088
132Priya英文2299
138Mohit数学2192

以下查询显示了来自上面 School_Stu_Details 表的每个科目的学生最高分数

输出

Stu_SubjectMAX (Stu Marks)
英文99
数学98
印地语93
电脑90