📜  MS SQL Server 中的 Group by 子句(1)

📅  最后修改于: 2023-12-03 14:44:24.971000             🧑  作者: Mango

MS SQL Server中的Group by 子句

在MS SQL Server中,Group by子句用于将查询结果根据一个或多个列进行分组,并在每个组上进行聚合操作。

语法

下面是Group by子句的基本语法:

SELECT column1, column2, ..., aggregate_function(column)
FROM table
WHERE conditions
GROUP BY column1, column2, ...
ORDER BY column1, column2, ...;

其中,column1, column2, ...是用于分组的列,aggregate_function(column)是聚合函数,table是要查询的表,conditions是查询条件,ORDER BY用于对分组后的结果进行排序。

聚合函数

常用的聚合函数有:

  • COUNT(column):计算行数
  • SUM(column):计算总和
  • AVG(column):计算平均值
  • MAX(column):计算最大值
  • MIN(column):计算最小值
示例

例如,我们有一个销售订单表格,包含以下列:order_id, customer_id, order_date, product_id, quantity, unit_price, discount

我们可以使用以下SQL语句计算每个客户的总销售额:

SELECT customer_id, SUM(quantity * unit_price * (1 - discount)) AS total_sales
FROM sales_orders
GROUP BY customer_id;

以上SQL语句将结果按照customer_id进行分组,然后对每个分组计算销售额的总和。

注意事项
  • Group by子句中只能包含查询结果中的列或者聚合函数。
  • 如果在Select子句中使用聚合函数,那么除了聚合函数之外的列都必须在Group by子句中明确指定。
  • 如果在Group by子句中指定了多个列,那么分组条件是这些列的组合,而不是单独某一列的值。
  • Group by子句的顺序可以与Select子句不同,因为SQL Server会先根据Group by子句中指定的列进行分组,然后再使用Select子句筛选出需要的列或聚合函数。