Hello! 欢迎来到小浪云!


掌握 SQL GROUP BY:组织和汇总数据


avatar
小浪云 2024-12-19 12

掌握 SQL GROUP BY:组织和汇总数据

sql GROUP BY 子句:数据分组与汇总

SQL 的 GROUP BY 子句用于将数据按照一列或多列的值进行分组,通常与聚合函数(如 SUM、count、AVG、MAX、MIN)结合使用,对每个分组进行计算。

GROUP BY 语法

select column1, aggregate_function(column2) FROM table_name GROUP BY column1;
  • column1:分组依据列。
  • aggregate_function(column2):作用于每个分组的聚合函数
  • table_name:数据来源表。

GROUP BY 工作原理

  1. 分组:具有相同 column1 值的行被划分到同一组。
  2. 聚合:对每个分组应用聚合函数,计算单个结果。

示例表:销售数据


产品 (product) 类别 (category) 销售额 (sales_amount) 地区 (region)
笔记本电脑 (laptop) 电子产品 (electronics) 1000 北部 (north)
手机 (phone) 电子产品 (electronics) 500 南部 (south)
电视 (tv) 电子产品 (electronics) 700 北部 (north)
办公桌 (desk) 家具 (furniture) 200 东部 (east)
椅子 (chair) 家具 (furniture) 150 东部 (east)

GROUP BY 使用示例

1. 按类别分组计算总销售额

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

结果:

类别 (category) 总销售额 (total_sales)
电子产品 (electronics) 2200
家具 (furniture) 350

2. 统计每个类别的产品数量

SELECT category, COUNT(product) AS product_count FROM sales GROUP BY category;

结果:

类别 (category) 产品数量 (product_count)
电子产品 (electronics) 3
家具 (furniture) 2

3. 按多列分组

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

结果:

类别 (category) 地区 (region) 地区销售额 (regional_sales)
电子产品 (electronics) 北部 (north) 1700
电子产品 (electronics) 南部 (south) 500
家具 (furniture) 东部 (east) 350

GROUP BY 与 HAVING 结合使用

HAVING 子句用于在分组后过滤分组结果,与 WHERE 子句不同,WHERE 子句在分组前过滤行。

示例:过滤销售额大于 500 的类别

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

结果:

类别 (category) 总销售额 (total_sales)
电子产品 (electronics) 2200

GROUP BY 重要提示

  1. 执行顺序:分组 -> 聚合 -> HAVING 过滤。
  2. SELECT 列:必须出现在 GROUP BY 子句中或用作聚合函数的参数。

有效查询:

SELECT category, MAX(sales_amount) FROM sales GROUP BY category;

无效查询:

SELECT Product, SUM(Sales_Amount) FROM sales GROUP BY Category; -- 错误:Product 不在 GROUP BY 中,也不是聚合函数的参数
  1. 多列分组:可以使用多个列进行分组,创建更细致的划分。
  2. NULL 值处理:NULL 值被视为一个单独的分组。

实际应用场景

  • 销售报表:计算每个产品或地区的总销售额。
  • 库存管理:计算每个类别的商品数量。
  • 数据分析:按类别、日期或位置计算平均值或总和。

总结

GROUP BY 子句是 SQL 中强大的数据汇总工具,能有效地生成有意义的分析结果。 熟练掌握 GROUP BY 的用法对于高效的数据库查询至关重要。

作者:Abhay Singh Kathayat
开发人员,精通前后端技术,使用多种编程语言和框架构建高效、可扩展、用户友好的应用程序。
联系邮箱:kaashshorts28@gmail.com

相关阅读