SQL – GROUP BY 语句

SQL GROUP BY 语句

SQL中的GROUP BY语句用于在一些函数的帮助下将相同的数据安排到组中。例如,如果一个特定的列在不同的行中有相同的值,那么它将把这些行安排在一个组中。

重要的几点:

  • GROUP BY子句与SELECT语句一起使用。
  • 在查询中,GROUP BY子句放在WHERE子句之后。
  • 在查询中,如果使用ORDER BY子句,则将GROUP BY子句放在前面。

语法 :

SELECT column1, function_name(column2)
FROM table_name
WHERE condition
GROUP BY column1, column2
ORDER BY column1, column2;

function_name : 所使用的函数的名称,例如SUM(), AVG().
table_name : 表名.
condition : 使用条件.

示例表:

Employee

SQL GROUP BY 语句

Student

SQL GROUP BY 语句

示例:

  • 按单列分组 :组单列是指将同一列的所有值相同的行放在一个组中。考虑下面的查询:
SELECT NAME, SUM(SALARY) FROM Employee 
GROUP BY NAME; 

上面的查询将产生以下输出:

SQL GROUP BY 语句

在上面的输出中可以看到,具有重复名称的行被分组在相同的NAME下,它们对应的SALARY是重复行的SALARY的总和。这里使用SQL的SUM()函数来计算和。

  • 按多列分组 :按多列分组,例如,GROUP BY column1, column2. 这意味着将两列的值放在相同的行中 column1column2 在一个组。考虑下面的查询:
SELECT SUBJECT, YEAR, Count(*)
FROM Student
GROUP BY SUBJECT, YEAR;  

输出 :

SQL GROUP BY 语句

正如您在上面的输出中看到的,SUBJECT和YEAR都相同的学生被放在同一个组中。而唯一的SUBJECT是相同的,而不是YEAR的则属于不同的组。因此,这里我们根据两列或多列对表进行了分组。

HAVING Clause

我们知道WHERE子句用于在列上放置条件,但是如果我们想在组上放置条件呢?

这时就需要使用HAVING子句了。我们可以使用HAVING子句来设置条件,以决定哪一组将成为最终结果集的一部分。此外,我们不能在WHERE子句中使用诸如SUM()、COUNT()等聚合函数。所以我们必须使用HAVING子句如果我们想在条件中使用这些函数。

语法 :

SELECT column1, function_name(column2)
FROM table_name
WHERE condition
GROUP BY column1, column2
HAVING condition
ORDER BY column1, column2;

function_name : 所使用的函数的名称,例如SUM(), AVG().
table_name : 表名.
condition : 使用条件.

示例 :

SELECT NAME, SUM(SALARY) FROM Employee 
GROUP BY NAME
HAVING SUM(SALARY)>3000; 

输出 :

SQL GROUP BY 语句

正如您在上面的输出中看到的,三个组中只有一个组出现在结果集中,因为它是唯一一个SALARY之和大于3000的组。所以我们在这里使用HAVING子句来放置这个条件,因为条件需要放在组而不是列上。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程