SQL分组聚合子查询问题

news2024/9/25 8:57:09

场景

订单表 t_order 有如下数据:
字段分别为, 销售订单号、 订货数量
在这里插入图片描述

发货表 t_order_delivery 有如下数据:
字段分别为, 销售订单号、 发货数量
在这里插入图片描述

问题

问题1:查询部分发货的 销售订单号数据 ?

分析: 一个订单可能分为多次发货,如果想要获取到一个订单到底发了多少货,就需要对发货单进行聚合。

聚合查询发货单的全部发货数量之和,以及订单的订货数量结果
然后再利用子查询 比较二者的大小关系

先把子查询写出来

SELECT 
  ANY_VALUE (line.sales_order_id) AS sales_order_id,
  SUM(line.order_quantity) AS order_quantity,
  SUM(p.delivered_quantity) AS delivered_quantity 
FROM
  t_ph_ibmp_order_line line 
  LEFT JOIN 
    (SELECT 
      sales_order_id,
      SUM(delivered_quantity) AS delivered_quantity 
    FROM
      t_ph_ibmp_orderdelivery_position 
    GROUP BY sales_order_id) AS p 
    ON line.sales_order_id = p.sales_order_id 
GROUP BY line.sales_order_id 

再写外层判断条件的查询:

SELECT 
  *
FROM

  (SELECT 
    ANY_VALUE (line.sales_order_id) AS sales_order_id,
    SUM(line.order_quantity) AS order_quantity,
    SUM(p.delivered_quantity) AS delivered_quantity 
  FROM
    t_ph_ibmp_order_line line 
    LEFT JOIN 
      (SELECT 
        sales_order_id,
        SUM(delivered_quantity) AS delivered_quantity 
      FROM
        t_ph_ibmp_orderdelivery_position 
      GROUP BY sales_order_id) AS p 
      ON line.sales_order_id = p.sales_order_id 
  GROUP BY line.sales_order_id) t 
  
WHERE t.order_quantity >= t.delivered_quantity 
  AND t.delivered_quantity >= 0 

整体的思路就是:
利用子查询先分组聚合数据,之后再利用子查询处理分组聚合后的条件查询。

问题2:查询全部发货的 销售订单号数据 ?

SELECT 
  * 
FROM
  (SELECT 
    ANY_VALUE (line.sales_order_id) AS sales_order_id,
    SUM(line.order_quantity) AS order_quantity,
    SUM(p.delivered_quantity) AS delivered_quantity 
  FROM
    t_ph_ibmp_order_line line 
    LEFT JOIN 
      (SELECT 
        sales_order_id,
        SUM(delivered_quantity) AS delivered_quantity 
      FROM
        t_ph_ibmp_orderdelivery_position 
      GROUP BY sales_order_id) AS p 
      ON line.sales_order_id = p.sales_order_id 
  GROUP BY line.sales_order_id) t 
WHERE t.order_quantity = t.delivered_quantity 

问题3:查询未发货的 销售订单号数据 ?

SELECT 
  * 
FROM
  (SELECT 
    ANY_VALUE (line.sales_order_id) AS sales_order_id,
    SUM(line.order_quantity) AS order_quantity,
    SUM(p.delivered_quantity) AS delivered_quantity 
  FROM
    t_ph_ibmp_order_line line 
    LEFT JOIN 
      (SELECT 
        sales_order_id,
        SUM(delivered_quantity) AS delivered_quantity 
      FROM
        t_ph_ibmp_orderdelivery_position 
      GROUP BY sales_order_id) AS p 
      ON line.sales_order_id = p.sales_order_id 
  GROUP BY line.sales_order_id) t 
WHERE t.delivered_quantity = 0 
  OR t.delivered_quantity IS NULL 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2163104.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据集-目标检测系列-海洋鱼类检测数据集 fish>> DataBall

数据集-目标检测系列-海洋鱼类检测数据集 fish>> DataBall 数据集-目标检测系列-海洋鱼类检测数据集 fish 数据量:1W 数据项目地址: gitcode: https://gitcode.com/DataBall/DataBall-detections-100s/overview github: https://github.com/…

wpf中如何访问控件和生成使用事件?

实际上对于初次使用wpf的同学来说,尤其是有winform编程经验的童鞋来说,最需要解决的就是快速掌握访问控件的方法以及生成和使用事件。这样才能让页面具有最起码的交互性。下面我们来分别讲述。 文章原出处:https://blog.csdn.net/haigear/ar…

「数组」离散化 / Luogu B3694(C++)

目录 概述 思路 算法过程 复杂度 Code 概述 Luogu B3694: 给定一个长度为 n 的数列 aa。定义 rank(i) 表示数列 a 中比 ai 小的不同数字个数再加一。 对 1≤i≤n,现在请你求出所有的 rank(i)。 输出格式 对每组数据,输出一行 n 个整数&a…

智慧照明,安全度夏:揭秘如何前置防御暴雨中的路灯杆漏电隐患

随着夏季暴雨频发,多地近期发生的多起路人因路灯杆漏电触电身亡的悲剧,再次为公众安全敲响了警钟。从河南郑州到辽宁营口,一起起触目惊心的触电事故,不仅夺走了宝贵的生命,也引发了社会各界对暴雨天气下公共设施安全隐…

轴承介绍以及使用

轴承(Bearing)是在机械传动过程中起固定、旋转和减小载荷摩擦系数的部件。也可以说,当其它机件在轴上彼此产生相对运动时,用来降低运动力传递过程中的摩擦系数和保持转轴中心位置固定的机件。 轴承是当代机械设备中一种举足轻重的…

Go Mail设置指南:如何提升发送邮件效率?

Go Mail使用技巧与配置教程?如何用Go Mail实现发信? 随着工作负载的增加,如何高效地发送和管理邮件成为了许多职场人士面临的挑战。AokSend将为您提供一份详细的Go Mail设置指南,帮助您提升发送邮件的效率,让您的邮件…

数据库学习1

🌟欢迎来到 我的博客 —— 探索技术的无限可能! 🌟博客的简介(文章目录) 目录 登录 查看所有库 切换数据库 查看对应库所有的表 修改权限和密码 启动和停止服务器 创建数据库 查看数据库的表结构 创建表 在表…

Github Webhook触发Jenkins自动构建

1.功能说明 Github Webhook可以触发Jenkins自动构建,通过配置Github Webhook,每次代码变更之后(例如push操作),Webhook会自动通知Jenkins服务器,Jenkins会自动执行预定义的构建任务(如Jenkins …

揭秘“隐形杀手”:谐波对医院电网的隐形危害

谐波主要由非线性负载设备如医疗器械、节能照明、变频调速装置等产生。在医院的复杂配电网络中,这些谐波成分如同细小的波纹,不断叠加,最终扰乱了电能的纯净性,导致电能品质下降,电力供应的可靠性也随之降低。 医院里…

Linux ping c实现

linux下ping程序的c实现 #include <stdio.h> #include <stdlib.h> #include <sys/socket.h> #include <netinet/in.h> #include <stdint.h> #include <netdb.h> #include <arpa/inet.h> #include <unistd.h> #include <st…

服务设计原则介绍

在Java或任何软件开发中&#xff0c;设计服务时遵循一些核心原则是非常重要的&#xff0c;这些原则不仅有助于构建高质量、可维护的软件系统&#xff0c;还能提高系统的可扩展性和可重用性。以下是一些关键的服务设计原则&#xff1a; 单一职责原则&#xff08;SingleResponsib…

将python代码文件转成Cython 编译问题集

准备setup.py from distutils.core import setup from Cython.Build import cythonize import glob# 指定目标目录 python setup.py build -c mingw32 target_dir "src"# 使用glob模块匹配目录中的所有.pyx文件 pyx_files glob.glob(target_dir "/**/*.py&q…

路政通 | OPENAIGC开发者大赛高校组AI创新之星奖

在第二届拯救者杯OPENAIGC开发者大赛中&#xff0c;涌现出一批技术突出、创意卓越的作品。为了让这些优秀项目被更多人看到&#xff0c;我们特意开设了优秀作品报道专栏&#xff0c;旨在展示其独特之处和开发者的精彩故事。 无论您是技术专家还是爱好者&#xff0c;希望能带给…

Vue+Tui-image-editor实现图片编辑(涂鸦,裁剪,标注,旋转,滤镜)

目录 前言 效果展示 涂鸦 裁剪 标注 旋转 滤镜 安装 使用 中文化自定义样式按钮优化 参考链接 前言 需求&#xff1a;对图片进行旋转、缩放、裁剪、涂鸦、标注、添加文本等。 效果展示 涂鸦 裁剪 标注 旋转 滤镜 安装 npm i tui-image-editor // or yarn add tui-image…

【hot100-java】【环形链表 II】

印象题 /*** Definition for singly-linked list.* class ListNode {* int val;* ListNode next;* ListNode(int x) {* val x;* next null;* }* }*/ public class Solution {public ListNode detectCycle(ListNode head) {ListNode fasthea…

①无需编程 独立通道 Modbus主站EtherNet/IP转ModbusRTU/ASCII工业EIP网关串口服务器

Modbus主站EtherNet/IP转ModbusRTU/ASCII工业EIP网关串口服务器https://item.taobao.com/item.htm?ftt&id743840591638 EtherNet/IP 串口网关 EtherNet/IP 转 RS485 型号 2路总线EIP网关 MS-A1-2021 4路总线EIP网关 MS-A1-2041 4路总线EIP网关&#xff08;双网口&am…

NASA数据集:ATLAS/ICESat-2 L3 A海冰干岸,版本6

目录 ATLAS/ICESat-2 L3 A海冰干岸&#xff0c;版本6 简介 代码 引用 网址推荐 0代码在线构建地图应用 机器学习 ATLAS/ICESat-2 L3 A海冰干岸&#xff0c;版本6 简介 ICESat-2天文台利用光计数激光雷达&#xff08;ATLAS仪器&#xff09;和辅助系统&#xff08;GPS、…

速通LLaMA3:《The Llama 3 Herd of Models》全文解读

文章目录 概览论文开篇IntroductionGeneral OverviewPre-TrainingPre-Training DataModel ArchitectureInfrastructure, Scaling, and EfficiencyTraining Recipe Post-TrainingResultsVision ExperimentsSpeech Experiments⭐Related WorkConclusionLlama 3 模型中的数学原理1…

mybatisplus介绍以及使用(下)

目录 一、mybatisplus扩展功能 1、代码生成 1.1 安装插件 1.2 使用 2、逻辑删除 二、插件功能 1、分页插件 2、示例 写在前面&#xff1a; 在上篇的mybatisplus中介绍到了其概念&#xff0c;其中包括了什么是mybatisplus以及已经有了mybatis但是我们为什么使用它&#x…

【MySQL内置数据库】information_schema

MySQL8.0.37 统计 1 ADMINISTRABLE_ROLE_AUTHORIZATIONS 2 APPLICABLE_ROLES 3 CHARACTER_SETS 提供了关于可用字符集的信息 4 CHECK_CONSTRAINTS 5 COLLATIONS 提供了关于字符集的排序规则的信息 6 COLLATION_CHARACTER_SET_APPLICABILITY 7 COLUMNS …