目录
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
列中的月份进行分组,并返回每个月的平均订单金额。
注意事项
- 必须与聚合函数一起使用:
GROUP BY
语句通常与聚合函数(如COUNT()
、SUM()
、AVG()
等)一起使用,除非你只需要简单地按列分组查看数据。
- SELECT 中的列:
- 在
GROUP BY
语句中,SELECT
子句中的列必须是:- 聚合函数的结果,或者
- 在
GROUP BY
中列出的列。
- 在
- ORDER BY 与 GROUP BY:
GROUP BY
用于分组数据,而ORDER BY
用于排序数据。可以同时使用GROUP BY
和ORDER BY
来对分组后的结果进行排序。
- HAVING 子句:
HAVING
用于在分组后对结果进行筛选,它类似于WHERE
,但WHERE
不能与聚合函数一起使用,而HAVING
可以。
发表回复