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

wufei123 2025-01-26 阅读:5 评论:0
SQL GROUP BY 子句:数据分组与汇总 SQL 的 GROUP BY 子句用于将数据按照一列或多列的值进行分组,通常与聚合函数(如 SUM、COUNT、AVG、MAX、MIN)结合使用,对每个分组进行计算。 GROUP BY 语法...

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

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

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

GROUP BY 语法
PHP
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. 按类别分组计算总销售额
PHP
SELECT category, SUM(sales_amount) AS total_sales
FROM sales
GROUP BY category;
结果: 类别 (category) 总销售额 (total_sales) 电子产品 (electronics) 2200 家具 (furniture) 350 --- 2. 统计每个类别的产品数量
PHP
SELECT category, COUNT(product) AS product_count
FROM sales
GROUP BY category;
结果: 类别 (category) 产品数量 (product_count) 电子产品 (electronics) 3 家具 (furniture) 2 --- 3. 按多列分组
PHP
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 的类别
PHP
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 子句中或用作聚合函数的参数。

有效查询:

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

无效查询:

PHP
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

以上就是掌握 SQL GROUP BY:组织和汇总数据的详细内容,更多请关注知识资源分享宝库其它相关文章!

版权声明

本站内容来源于互联网搬运,
仅限用于小范围内传播学习,请在下载后24小时内删除,
如果有侵权内容、不妥之处,请第一时间联系我们删除。敬请谅解!
E-mail:dpw1001@163.com

分享:

扫一扫在手机阅读、分享本文

发表评论
热门文章
  • 华为 Mate 70 性能重回第一梯队 iPhone 16 最后一块遮羞布被掀

    华为 Mate 70 性能重回第一梯队 iPhone 16 最后一块遮羞布被掀
    华为 mate 70 或将首发麒麟新款处理器,并将此前有博主爆料其性能跑分将突破110万,这意味着 mate 70 性能将重新夺回第一梯队。也因此,苹果 iphone 16 唯一能有一战之力的性能,也要被 mate 70 拉近不少了。 据悉,华为 Mate 70 性能会大幅提升,并且销量相比 Mate 60 预计增长40% - 50%,且备货充足。如果 iPhone 16 发售日期与 Mate 70 重合,销量很可能被瞬间抢购。 不过,iPhone 16 还有一个阵地暂时难...
  • 酷凛 ID-COOLING 推出霜界 240/360 一体水冷散热器,239/279 元

    酷凛 ID-COOLING 推出霜界 240/360 一体水冷散热器,239/279 元
    本站 5 月 16 日消息,酷凛 id-cooling 近日推出霜界 240/360 一体式水冷散热器,采用黑色无光低调设计,分别定价 239/279 元。 本站整理霜界 240/360 散热器规格如下: 酷凛宣称这两款水冷散热器搭载“自研新 V7 水泵”,采用三相六极马达和改进的铜底方案,缩短了水流路径,相较上代水泵进一步提升解热能力。 霜界 240/360 散热器的水泵为定速 2800 RPM 设计,噪声 28db (A)。 两款一体式水冷散热器采用 27mm 厚冷排,...
  • 惠普新款战 99 笔记本 5 月 20 日开售:酷睿 Ultra / 锐龙 8040,4999 元起

    惠普新款战 99 笔记本 5 月 20 日开售:酷睿 Ultra / 锐龙 8040,4999 元起
    本站 5 月 14 日消息,继上线官网后,新款惠普战 99 商用笔记本现已上架,搭载酷睿 ultra / 锐龙 8040处理器,最高可选英伟达rtx 3000 ada 独立显卡,售价 4999 元起。 战 99 锐龙版 R7-8845HS / 16GB / 1TB:4999 元 R7-8845HS / 32GB / 1TB:5299 元 R7-8845HS / RTX 4050 / 32GB / 1TB:7299 元 R7 Pro-8845HS / RTX 2000 Ada...
  • python怎么调用其他文件函数

    python怎么调用其他文件函数
    在 python 中调用其他文件中的函数,有两种方式:1. 使用 import 语句导入模块,然后调用 [模块名].[函数名]();2. 使用 from ... import 语句从模块导入特定函数,然后调用 [函数名]()。 如何在 Python 中调用其他文件中的函数 在 Python 中,您可以通过以下两种方式调用其他文件中的函数: 1. 使用 import 语句 优点:简单且易于使用。 缺点:会将整个模块导入到当前作用域中,可能会导致命名空间混乱。 步骤:...
  • python中int函数的用法

    python中int函数的用法
    int() 函数将值转换为整数,支持多种类型(字符串、字节、浮点数),默认进制为 10。可以指定进制数范围在 2-36。int() 返回 int 类型的转换结果,丢弃小数点。例如,将字符串 "42" 转换为整数为 42,将浮点数 3.14 转换为整数为 3。 Python 中的 int() 函数 int() 函数用于将各种类型的值转换为整数。它接受任何可以解释为整数的值作为输入,包括字符串、字节、浮点数和十六进制表示。 用法 int(object, base=10) 其中...