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:数据来源表。
- 分组:具有相同 column1 值的行被划分到同一组。
- 聚合:对每个分组应用聚合函数,计算单个结果。
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 重要提示
- 执行顺序:分组 -> 聚合 -> HAVING 过滤。
- 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 中,也不是聚合函数的参数
- 多列分组:可以使用多个列进行分组,创建更细致的划分。
- NULL 值处理:NULL 值被视为一个单独的分组。
- 销售报表:计算每个产品或地区的总销售额。
- 库存管理:计算每个类别的商品数量。
- 数据分析:按类别、日期或位置计算平均值或总和。
GROUP BY 子句是 SQL 中强大的数据汇总工具,能有效地生成有意义的分析结果。 熟练掌握 GROUP BY 的用法对于高效的数据库查询至关重要。
作者:Abhay Singh Kathayat
全栈开发人员,精通前后端技术,使用多种编程语言和框架构建高效、可扩展、用户友好的应用程序。
联系邮箱:kaashshorts28@gmail.com
以上就是掌握 SQL GROUP BY:组织和汇总数据的详细内容,更多请关注知识资源分享宝库其它相关文章!
版权声明
本站内容来源于互联网搬运,
仅限用于小范围内传播学习,请在下载后24小时内删除,
如果有侵权内容、不妥之处,请第一时间联系我们删除。敬请谅解!
E-mail:dpw1001@163.com
发表评论