当前位置: 首页 > 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中使用子查询、连接、分组和聚合函数来处理复杂的数据集。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 记一次ssh伪终端修改为shell
  • 案例-KVM高级功能部署(虚拟化技术实战)
  • nuxt3连接mongodb操作
  • 线性代数 第五讲:线性方程组_齐次线性方程组_非齐次线性方程组_公共解同解方程组_详解
  • k8s-pod 实战八 (gRPC 探测详细分析)
  • Linux虚拟机搭建K8S环境
  • pbds库
  • Python 从入门到实战5(列表的其它操作)
  • Gazebo Harmonic gz-harmonic 和 ROS2 Jazzy 思考题 建图和导航 SLAM Navigation
  • 微信小程序知识点(一)
  • 视频压缩工具哪个好?无损压缩工具分享
  • C语言:基本数据类型 char, short int, int
  • java后端开发-Mybatis连接数据库步骤
  • k3s中使用GPU资源
  • CommonJS与ESModule标准
  • 【附node操作实例】redis简明入门系列—字符串类型
  • 【刷算法】从上往下打印二叉树
  • Cookie 在前端中的实践
  • co模块的前端实现
  • github从入门到放弃(1)
  • JS题目及答案整理
  • leetcode378. Kth Smallest Element in a Sorted Matrix
  • node入门
  • PyCharm搭建GO开发环境(GO语言学习第1课)
  • React的组件模式
  • Spring Cloud Alibaba迁移指南(一):一行代码从 Hystrix 迁移到 Sentinel
  • Vue UI框架库开发介绍
  • 使用docker-compose进行多节点部署
  • 腾讯大梁:DevOps最后一棒,有效构建海量运营的持续反馈能力
  • shell使用lftp连接ftp和sftp,并可以指定私钥
  • 资深实践篇 | 基于Kubernetes 1.61的Kubernetes Scheduler 调度详解 ...
  • #pragma once与条件编译
  • #微信小程序:微信小程序常见的配置传旨
  • (1)常见O(n^2)排序算法解析
  • (6)添加vue-cookie
  • (8)STL算法之替换
  • (二)丶RabbitMQ的六大核心
  • (附源码)spring boot智能服药提醒app 毕业设计 102151
  • (附源码)小程序儿童艺术培训机构教育管理小程序 毕业设计 201740
  • (力扣题库)跳跃游戏II(c++)
  • (区间dp) (经典例题) 石子合并
  • (四)opengl函数加载和错误处理
  • (图)IntelliTrace Tools 跟踪云端程序
  • (转)德国人的记事本
  • (转载)(官方)UE4--图像编程----着色器开发
  • (转载)CentOS查看系统信息|CentOS查看命令
  • (轉)JSON.stringify 语法实例讲解
  • .mp4格式的视频为何不能通过video标签在chrome浏览器中播放?
  • .NET Core 成都线下面基会拉开序幕
  • .NET4.0并行计算技术基础(1)
  • .Net下的签名与混淆
  • .secret勒索病毒数据恢复|金蝶、用友、管家婆、OA、速达、ERP等软件数据库恢复
  • ??myeclipse+tomcat
  • @serverendpoint注解_SpringBoot 使用WebSocket打造在线聊天室(基于注解)
  • []利用定点式具实现:文件读取,完成不同进制之间的