T-SQL - GROUP BY 子句

SQL Server GROUP BY 子句与 SELECT 语句配合使用,将相同的数据分组。

GROUP BY 子句位于 SELECT 语句中的 WHERE 子句之后,并且位于 ORDER BY 子句之前。


语法

以下是 GROUP BY 子句的基本语法。 GROUP BY 子句必须跟在 WHERE 子句中的条件之后,并且如果使用了 ORDER BY 子句,则必须在 ORDER BY 子句之前。

SELECT column1, column2 
FROM table_name 
WHERE [ conditions ] 
GROUP BY column1, column2 
ORDER BY column1, column2 

示例

考虑 CUSTOMERS 表有以下记录 −

ID  NAME       AGE       ADDRESS          SALARY 
1   Ramesh     32        Ahmedabad        2000.00 
2   Khilan     25        Delhi            1500.00 
3   kaushik    23        Kota             2000.00 
4   Chaitali   25        Mumbai           6500.00 
5   Hardik     27        Bhopal           8500.00 
6   Komal      22        MP               4500.00 
7   Muffy      24        Indore           10000.00 

如果您想知道每个客户的工资总额,那么下面将是 GROUP BY 查询。

SELECT NAME, SUM(SALARY) as [sum of salary] FROM CUSTOMERS 
   GROUP BY NAME;

上面的命令将产生以下输出。

NAME        sum of salary 
Chaitali    6500.00 
Hardik      8500.00 
kaushik     2000.00 
Khilan      1500.00 
Komal       4500.00 
Muffy       10000.00 
Ramesh      2000.00

现在让我们考虑以下 CUSTOMERS 表,其中包含以下具有重复名称的记录。

ID  NAME       AGE       ADDRESS           SALARY 
1   Ramesh     32        Ahmedabad         2000.00 
2   Khilan     25        Delhi             1500.00 
3   kaushik    23        Kota              2000.00 
4   Chaitali   25        Mumbai            6500.00 
5   Hardik     27        Bhopal            8500.00 
6   Komal      22        MP                4500.00 
7   Muffy      24        Indore            10000.00 

如果我们想知道每个客户的工资总额,那么下面将是 GROUP BY 查询。

SELECT NAME, SUM(SALARY) as [sum of salary] FROM CUSTOMERS 
   GROUP BY NAME 

上面的命令将产生以下输出。

NAME        sum of salary 
Hardik      8500.00 
kaushik     8500.00 
Komal       4500.00 
Muffy       10000.00 
Ramesh      3500.00