首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >SQL查询-匹配sum结果的第一个值

SQL查询-匹配sum结果的第一个值
EN

Stack Overflow用户
提问于 2016-05-23 17:57:48
回答 1查看 74关注 0票数 0

我目前正在尝试通过一个基于sum条件的sql查询来获取一个特定值。

这个想法是,我需要一个特定的minimum_qty的产品,以减少其交付时间。在本例中,该值将为"2“。其思想是查询对pop_supplied_qty列求和,直到它的>= minimum_qty为止。

查询结果应该是第一次满足该条件的pop_order_num (653)。

当前查询如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
CASE
    WHEN (sum(pop.pop_qty) - sum(pop.pop_supplied_qty)) >= minimum_qty
        THEN MIN(pop.pop_order_num)
    END AS pre_order_dt

表:

感谢您的投入!

EN

回答 1

Stack Overflow用户

发布于 2016-05-23 19:23:17

您可以使用内联变量和一些子查询来执行此操作:

  • 先按产品排序记录,然后按预购编号排序;
  • 添加累计和的值,并在记录具有不同的产品参考时重置该值;当和超过累计数量标记为已超过最小阈值的记录的最小阈值时,将布尔值设置为true。

我假设minimum_qty存储在一个product表中:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
select product_id,
       minimum_qty,
       pop_order_num,
       cumul_qty
from  (
      select @newqty := if(@p = product_id, @qty, 0) + qty,
             (@qty < minimum_qty and @newqty >= minimum_qty) filter,
             @p := product_id as product_id,
             minimum_qty,
             pop_order_num,
             @qty := @newqty as cumul_qty
      from  (
            select   pop.product_id,
                     pop.pop_order_num,
                     pop.pop_qty - pop.pop_supplied_qty as qty,
                     p.minimum_qty
            from     pre_order_dt pop
            inner join product p on p.product_id = pop.product_id 
            order by product_id,
                     pop_order_num
            limit    10000000000
            ) as base,
            (select @qty := 0) as init
      ) as extend
 where filter

SQL fiddle

注意,limit子句只是一种预防措施,因为MySql引擎不必遵守order by,因为它发生在内部查询中。通过添加limit子句(该子句应指定一个非常高的值,以便它实际上不会遗漏任何记录),MySql将被强制在处理封装此内部查询的查询之前应用order by

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37397529

复制
相关文章
SQL 从查询结果里查询[通俗易懂]
我想要从从表中查出每天电动车和手机各自的销售总额。这个需求还是蛮简单的,仅仅须要依据createtime和product group by即可了。以下是我写的SQL语句:
全栈程序员站长
2022/07/20
2.8K0
SQL 从查询结果里查询[通俗易懂]
SQL模糊查询的四种匹配模式
表示任意0个或多个字符,可匹配任意类型和长度的字符。有些情况下是中文,需用两个百分号(%%)表示:
Leophen
2019/08/23
19.2K0
sql的嵌套查询_嵌套查询和嵌套结果的区别
SQL连接查询和嵌套查询详解 连接查询 若一个查询同时涉及两个或两个以上的表,则称之为连接查询。连接查询是数据库中最最要的查询,
全栈程序员站长
2022/09/22
4K0
sql的嵌套查询_嵌套查询和嵌套结果的区别
mybatis返回值_存储过程获取查询结果
以Map为最外层容器时就要加 @MapKey("id") 指定提取 id 作为 key。
全栈程序员站长
2022/11/09
2.1K0
《SQL Cookbook》 - 第二章 查询结果排序
1. 默认情况下,ORDER BY会做升序排列,因此ASC子句是可选的。可以通过DESC执行降序排列。可以再ORDER BY子句中列出不同的排序列,逗号分隔。
bisal
2021/09/06
1K0
linq to sql取出随机记录/多表查询/将查询出的结果生成xml
在手写sql的年代,如果想从sqlserver数据库随机取几条数据,可以利用order by NewId()轻松实现,要实现多表查询也可以用select * from A,B Where A.ID=B.ID做到,但这些功能到了linq to sql中如何实现呢? 关键点: 1.随机排序问题:可以用 Select(d=> new {NewId=new Guid()}).OrderBy(d=>d.NewId)达到order by NewId()的效果 2.多表查询 from a in TableA
菩提树下的杨过
2018/01/22
3.2K0
MyBatis查询结果resultType返回值类型详细介绍
比如根据某个字段获得数据库中的信息,把查询的结果信息封装成某个 JavaBean 类型的数据。
全栈程序员站长
2022/07/21
1.7K0
MyBatis查询结果resultType返回值类型详细介绍
Mysql常用sql语句(6)- limit 限制查询结果的条数
https://www.cnblogs.com/poloyy/category/1683347.html
小菠萝测试笔记
2020/06/09
2.5K0
Mysql常用sql语句(6)- limit 限制查询结果的条数
SQL查询和删除重复值的操作方法
如题,SQL查询和删除重复值,例子是在Oracle环境下,类似写法网上很多。 1、利用distinct关键字去重 2、利用group by分组去重(这里没有实验出来就不写了) 3、利用rowid查询去重(个人推荐这个,rowid查询速度是最快的)
用户8965210
2021/08/31
2.2K0
SQL聚合函数 SUM
SUM返回与expression相同的数据类型,但有如下异常:TINYINT、SMALLINT和INTEGER返回的数据类型都是INTEGER。
用户7741497
2022/03/27
1.4K0
SQL语句对查询结果集二次操作
如上所述: 如果是字段的话我们需要使用as起别名 查询的结果集是个集合,不是字段,所以不能用 as XXX来起别名 直接去掉as,使用别名即可
阮键
2020/06/19
1.4K0
SQL语句对查询结果集二次操作
sum 统计 SQL 实例
select sum(temp.times),sum(temp.c) from (select t.work_id releaserWorkId, t.real_name releaserName, t.nick_name releaserNickName, count(1) c, round(ifnull(sum(t.times),0),2) times from commonwealtime t where t.state =
一个会写诗的程序员
2018/08/17
5040
mysql——通过命令将sql查询的结果导出到具体文件
 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u013045437/article/details/81275960
拓荒者
2019/03/15
1.8K0
mysql——通过命令将sql查询的结果导出到具体文件
SQL语句查询结果集中的动态修改案例(临时表+游标)
本文转载:http://www.cnblogs.com/Charles2008/archive/2008/03/04/1090314.html
跟着阿笨一起玩NET
2018/09/18
2.2K0
使用 WordPress Transients API 缓存复杂的 SQL 查询和运算结果
Transients 是瞬时的意思,WordPress Transients API 是 WordPress 用来缓存一些复杂的 SQL 查询和运算结果的最简单的方法。它给这些需要缓存的数据一个过期时间,并且时间一到就会自动删除。
Denis
2023/04/14
9680
使用 WordPress Transients API 缓存复杂的 SQL 查询和运算结果
php如何判断SQL语句的查询结果是否为空?
PHP与mysql这对黄金搭档配合的相当默契,但偶尔也会遇到一些小需求不知道该怎么做,例如今天要谈到的:如何判断sql语句查询的结果集是否为空!
Yiiven
2022/12/15
3.6K0
SQL使用(一):如何使用SQL语句去查询第二高的值
初看了一眼题时,脑子还有一点迷糊,对于数值最大的和最小的,可以使用max和min去查询出来,但对于第N的就不好找了,思考了一会儿了,心里大致有二个思路:
王豆豆
2020/07/24
5.8K0
SQL使用(一):如何使用SQL语句去查询第二高的值
Mysql常用sql语句(10)- is null 空值查询
https://www.cnblogs.com/poloyy/category/1683347.html
小菠萝测试笔记
2020/06/09
4.4K0
Mysql常用sql语句(10)- is null 空值查询
sql 再not in 子查询有null值的奇怪现象
–如果null参与算术运算,则该算术表达式的值为null。(例如:+,-,*,/ 加减乘除)
斯文的程序
2019/11/07
1.8K0
分批拼接SQL IN 查询需要的ID字段值,解决IN 查询的ID过多问题
SQL查询使用的IN条件字段很多的时候,会造成SQL语句很长,大概SQL语句不能超过8K个字符,也有说IN不能超过1000个条件,总之太长了不行,需要拆分条件分批处理。下面提供一个将Int类型的条件字段值进行字符串拼接的方法。看代码:
用户1177503
2021/04/01
2.5K0

相似问题

列值匹配时的SQL sum字段

20

SQL查询如何减去不同SQL查询的结果?[Sum()的反向减法]

16

SQL Money Sum上的错误结果值

17

基于嵌套查询结果的Oracle SQL - SUM数据

13

SQL SUM查询返回结果中的重复行。

410
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文