📜  SQL |通过…分组(1)

📅  最后修改于: 2023-12-03 15:20:16.188000             🧑  作者: Mango

SQL | 通过分组

在 SQL 中通过分组可以将表格数据按照特定的列进行分组,并对每个分组进行聚合计算,例如求和、平均值、最大值、最小值等。

分组语法

使用 GROUP BY 关键字可以对表格数据进行分组,分组的列称为分组列,SELECT 语句中聚合计算的列称为聚合列。分组语法格式如下:

SELECT column1, column2, aggregate_function(column3)
FROM table
WHERE condition
GROUP BY column1, column2

其中,

  • column1, column2: 分组列,可以是一个或多个列;
  • aggregate_function(column3): 聚合列,对 column3 进行聚合计算的函数,如 SUM()AVG()MAX()MIN()COUNT() 等;
  • table: 表格名称;
  • condition: 可选的筛选条件,用于过滤部分数据。

注意,分组列必须出现在 SELECT 语句中或者在聚合函数中,否则会导致语法错误。而聚合列不能出现在 GROUP BY 语句中,否则会导致语法错误。

分组示例

假设我们有以下订单数据:

| 订单号 | 客户 | 产品 | 价格 | 数量 | | ------ | ----- | ---- | ---- | ---- | | 1 | Alice | 苹果 | 2.0 | 3 | | 2 | Bob | 梨子 | 1.5 | 4 | | 3 | Alice | 葡萄 | 3.5 | 2 | | 4 | Bob | 香蕉 | 2.0 | 5 |

现在我们要按照客户进行分组,求每个客户的订单总额和订单数量,SQL 语句如下:

SELECT 客户, SUM(价格 * 数量) AS 订单总额, COUNT(*) AS 订单数量
FROM 订单
GROUP BY 客户

执行结果如下:

| 客户 | 订单总额 | 订单数量 | | ----- | -------- | -------- | | Alice | 11.0 | 2 | | Bob | 15.5 | 2 |

我们可以看到,该查询结果展示了每个客户的订单总额和订单数量,合理使用分组可以快速得到我们需要的结果。

总结

通过分组可以对表格数据按照特定的列进行分组,并对每个分组进行聚合计算,使用 GROUP BY 关键字可以对表格数据进行分组,分组列称为分组列,SELECT 语句中聚合计算的列称为聚合列。在实际应用中,分组是一个非常常见的操作,合理使用分组可以快速得到我们需要的结果。