当前位置: 首页 > news >正文

MySQL中的分组统计

在数据库操作中,我们经常需要对数据进行分组统计,以便更好地分析和理解数据。MySQL提供了强大的分组和聚合函数,使得这一任务变得简单而高效。今天,我们将通过一个具体的SQL查询示例,深入探讨如何在MySQL中进行分组统计。

SQL查询示例

首先,让我们来看一个具体的SQL查询语句:

SELECTIFNULL(SUM(s.total_amount), 0) AS totalAmount,IFNULL(SUM(s.total_amount), 0) - IFNULL(SUM(s.invoice_amount), 0) AS totalWeight 
FROM(SELECTt.id,t.total_amount,t.invoice_amount FROMcontract_purchase_info tLEFT JOIN contract_info_detail scid ON t.order_sn = scid.purchaser_order_sn LEFT JOIN invoice_detail sid ON t.order_sn = sid.purchase_order_sn AND (sid.business_type = 0 OR sid.business_type IS NULL) LEFT JOIN invoice_info sii ON sid.invoice_id = sii.id WHEREt.`status` = 1 GROUP BYt.id ) AS s

分析查询

1. 子查询

这个查询首先定义了一个子查询,用于从contract_purchase_info表中选择数据,并与contract_info_detailinvoice_detailinvoice_info表进行左连接。连接条件是基于订单号(order_sn)和业务类型(business_type)。

  • LEFT JOIN:左连接确保了即使在右表中没有匹配的行,左表中的行也会被包含在结果中。
  • WHERE子句:过滤条件t.status = 1确保了只选择状态为1的记录。

2. 分组

在子查询中,使用了GROUP BY t.id来对结果进行分组。这意味着对于每个唯一的id,其total_amountinvoice_amount将被聚合。

3. 聚合函数

  • SUM(s.total_amount):计算每个组的total_amount字段的总和。
  • SUM(s.invoice_amount):计算每个组的invoice_amount字段的总和。

4. 条件聚合

  • IFNULL函数:用于处理可能的NULL值。如果SUM的结果为NULL,则IFNULL函数将其转换为0。

5. 计算总重量

  • totalWeight:通过从total_amount中减去invoice_amount来计算。这可能表示了某种类型的净额或剩余金额。

总结

这个查询是一个典型的分组统计示例,展示了如何在MySQL中使用子查询、连接、分组和聚合函数来处理复杂的数据集。


http://www.mrgr.cn/news/18317.html

相关文章:

  • 特殊字符合集(包括各种emoji表情、windows ASCII字符、自定义字母图案等)
  • 项目管理干系人管理
  • 【Transformer】基本概述
  • 《父母爱情》:找结婚对象,别只看有房有车有颜,这4个特点更重要!
  • NVIDIA H200与AMD MI300X:前者高利润率是否合理?
  • .NET周刊【9月第1期 2024-09-01】
  • c++ 标准模板库 STL
  • 一文彻底搞懂Spring, Spring MVC, Spring Boot 和 Spring Cloud 区别
  • Python数据抓取与质量校验:以杭州市公交线路为例
  • 【全能型AI“草莓”来袭】探索未来AI市场的多元化与边界
  • 简单的棒棒图绘制教程
  • 24 - 第三方库的使用支持
  • Java-泛型
  • 速盾:防御ddos攻击的几大有效方法是什么?
  • 大模型企业应用落地系列九》多模态具身智能》端到端强化学习人形机器人
  • Python进阶————闭包与装饰器
  • 【网络安全】网络安全防护体系
  • 23:【stm32】ADC模数转换器
  • 字符串地指针表示方式
  • 三台机器,第一台机器可以ssh到第二台机器,第二台机器可以ssh到第三台机器,请问第一台机器上怎么通过ssh 直接从第三台机器scp文件到第一台机器?