目录

  1. SQL GROUP BY 语句简介
  2. SQL GROUP BY 语句的语法
  3. SQL GROUP BY 语句的使用示例
  4. 注意事项
  5. 参考资料

SQL GROUP BY 语句简介

GROUP BY 语句用于将结果集中的数据按一个或多个列进行分组。分组后,可以对每个组应用聚合函数(如 COUNT()SUM()AVG()MAX()MIN() 等),从而生成每组的汇总数据。

GROUP BY 是 SQL 中非常强大的功能,尤其在数据分析和报告中非常常用。例如,统计每个部门的员工总数、每个产品的销售总额等。


SQL GROUP BY 语句的语法

SELECT column1, column2, ..., aggregation_function(column)
FROM table_name
WHERE condition
GROUP BY column1, column2, ...;

参数说明:

  • column1, column2, …:用于分组的列,可以是一个或多个列。
  • aggregation_function(column):聚合函数,如 COUNT()SUM()AVG()MAX()MIN(),应用于要汇总的列。
  • table_name:需要查询的数据表的名称。
  • condition:筛选数据的条件,通常与 WHERE 子句一起使用。
  • GROUP BY:指定按照哪些列进行分组。

返回值:

  • 返回分组后的数据,每个分组的统计结果。

SQL GROUP BY 语句的使用示例

示例 1:按部门分组,获取每个部门的员工总数

SELECT department, COUNT(*) AS total_employees
FROM employees
GROUP BY department;

该查询将按 department 列分组,并返回每个部门的员工总数。

示例 2:按产品类别分组,获取每个类别的销售总额

SELECT category, SUM(sales_amount) AS total_sales
FROM sales
GROUP BY category;

该查询将按 category 列分组,并返回每个产品类别的销售总额。

示例 3:按客户分组,获取每个客户的最大订单金额

SELECT customer_id, MAX(order_amount) AS highest_order_amount
FROM orders
GROUP BY customer_id;

该查询将按 customer_id 列分组,并返回每个客户的最大订单金额。

示例 4:按月份分组,获取每个月的平均订单金额

SELECT MONTH(order_date) AS order_month, AVG(order_amount) AS avg_order_amount
FROM orders
GROUP BY MONTH(order_date);

该查询将按 order_date 列中的月份进行分组,并返回每个月的平均订单金额。


注意事项

  1. 必须与聚合函数一起使用
    • GROUP BY 语句通常与聚合函数(如 COUNT()SUM()AVG() 等)一起使用,除非你只需要简单地按列分组查看数据。
  2. SELECT 中的列
    • GROUP BY 语句中,SELECT 子句中的列必须是:
      • 聚合函数的结果,或者
      • GROUP BY 中列出的列。
  3. ORDER BY 与 GROUP BY
    • GROUP BY 用于分组数据,而 ORDER BY 用于排序数据。可以同时使用 GROUP BYORDER BY 来对分组后的结果进行排序。
  4. HAVING 子句
    • HAVING 用于在分组后对结果进行筛选,它类似于 WHERE,但 WHERE 不能与聚合函数一起使用,而 HAVING 可以。

参考资料