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

霞舞
发布: 2024-12-19 09:51:37
原创
1029人浏览过

掌握 sql group by:组织和汇总数据

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

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

GROUP BY 语法

<code class="sql">SELECT column1, aggregate_function(column2)
FROM table_name
GROUP BY column1;</code>
登录后复制
  • 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. 按类别分组计算总销售额

<code class="sql">SELECT category, SUM(sales_amount) AS total_sales
FROM sales
GROUP BY category;</code>
登录后复制

结果:

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

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

<code class="sql">SELECT category, COUNT(product) AS product_count
FROM sales
GROUP BY category;</code>
登录后复制

结果:

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

3. 按多列分组

<code class="sql">SELECT category, region, SUM(sales_amount) AS regional_sales
FROM sales
GROUP BY category, region;</code>
登录后复制

结果:

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

GROUP BYHAVING 结合使用

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

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

<code class="sql">SELECT category, SUM(sales_amount) AS total_sales
FROM sales
GROUP BY category
HAVING SUM(sales_amount) > 500;</code>
登录后复制

结果:

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

GROUP BY 重要提示

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

有效查询:

怪兽AI数字人
怪兽AI数字人

数字人短视频创作,数字人直播,实时驱动数字人

怪兽AI数字人44
查看详情 怪兽AI数字人
<code class="sql">SELECT category, MAX(sales_amount)
FROM sales
GROUP BY category;</code>
登录后复制

无效查询:

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

实际应用场景

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

总结

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

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

以上就是掌握 SQL GROUP BY:组织和汇总数据的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号