T-SQL GROUP BY
在 Transact SQL 中,GROUP BY 子句用于将数据分组。它跟随 WHERE 子句进入查询的 SELECT 语句。它具有聚合函数 (MAX、MIN、AVG、SUM 和 COUNT) 来根据一个或多个列对结果进行分组。
GROUP By 子句的语法如下:
GROUP BY 子句遵循 WHERE 子句中的条件,并引入 ORDER BY 子句。
SELECT column1, column2 
FROM table_name
WHERE [ conditions ]
GROUP BY column1, column2 
ORDER BY column1, column2
例如:
考虑具有以下记录的 CUSTOMERS 表 –
| ID | NAME | AGE | ADDRESS | SALARY | 
|---|---|---|---|---|
| 01 | William Shakespeare | 32 | Karachi | 7000.00 | 
| 02 | Alpoura | 24 | London | 3000.00 | 
| 03 | Jackson | 34 | Paris | 1200.00 | 
| 04 | HarperMachmohan | 20 | New York | 1500.00 | 
| 05 | EllaDevgun | 22 | Islamabad | 3400.00 | 
| 06 | David Warner | 23 | Turkey | 4400.00 | 
| 07 | Mason | 26 | Saudi Arabia | 5050.00 | 
如果您想了解每个客户的工资总额,则以下是 GROUP BY 查询。
SELECT NAME, SUM(SALARY) as [sum of salary] FROM CUSTOMERS 
GROUP BY NAME;
该命令给出以下输出。
| NAME | SALARY | 
|---|---|
| William Shakespeare | 7000.00 | 
| Alpoura | 3000.00 | 
| Jackson | 1200.00 | 
| Harper Machmohan | 1500.00 | 
| Ella Devgun | 3400.00 | 
| David Warner | 4400.00 | 
| Mason | 5050.00 | 
让我们考虑以下具有不同名称记录的 CUSTOMERS 表格。
| ID | NAME | AGE | ADDRESS | SALARY | 
|---|---|---|---|---|
| 01 | William Shakespeare | 32 | Karachi | 7000.00 | 
| 02 | Alpoura | 24 | London | 3000.00 | 
| 03 | Jackson | 34 | Paris | 1200.00 | 
| 04 | HarperMachmohan | 20 | New York | 1500.00 | 
| 05 | EllaDevgun | 22 | Islamabad | 3400.00 | 
| 06 | David Warner | 23 | Turkey | 4400.00 | 
| 07 | Mason | 26 | Saudi Arabia | 5050.00 | 
如果我们想知道每个客户的工资总额,则将生成以下 GROUP BY 查询。
SELECT NAME, SUM(SALARY) as [sum of salary] FROM CUSTOMERS 
 GROUP BY NAME, AGE
该命令给出以下输出。
| ID | AGE | SALARY | 
|---|---|---|
| Alpoura | 24 | 7400.00 | 
| Ella Devgun | 22 | 3400.00 | 
| Harper Machmohan | 20 | 2700.00 | 
| Mason | 26 | 5050.00 | 
| William Shakespeare | 32 | 10000.00 | 
极客教程