当前位置: 首页 > 面试题库 >

Oracle聚合功能分配金额

鲜于致远
2023-03-14
问题内容

假设我有2张表T1T2如下所示

T1

bag_id bag_type capacity
------|--------|--------
  1       A       500
  2       A       300
  3       A       100
  4       B       200
  5       B       100

T2

item_type item_amount
---------|-----------
   A         850
   B         300

表格中的每个记录T1代表一个袋子及其容量,这里我有5个袋子。我想编写一个将表中的项目分配T2到具有相同类型的每个包中的SQL ,即结果应如下所示

bag_id bag_type capacity allocated_amount
------|--------|--------|----------------
  1       A        500        500
  2       A        300        300
  3       A        100        50
  4       B        200        200
  5       B        100        100

因此,
我正在寻找某种聚合函数,我们称其为allocate(),它可以产生allocated_amount如上的列。我猜想,如果存在,它可能会像这样使用

select 
    t1.bag_id,
    t1.bag_type, 
    t1.capacity,
    allocate(t2.item_amount, t1.capacity) 
        over (partition by t1.bag_type order by t1.capacity desc) as allocatd_amount
from t1, t2
where t2.item_type = t1.bag_type

我当前的解决方案是使用临时表和PL / SQL循环进行计算,但是我希望我可以使用一个简单的SQL来实现。


问题答案:

您正在寻找一个累加的总和。像这样的东西:

select t1.*,
       (case when cumecap <= t2.item_amount 
             then t1.capacity
             when cumecap - t1.capacity <= t2.item_amount
             then t2.item_amount - (cumecap - t1.capacity)
             else 0
        end) as allocated_capacity
from (select t1.*,
             sum(t1.capacity) over (partition by bag_type order by bag_id) as cumecap
      from t1
     ) t1 join
     t2
     on t1.bag_type = t2.item_type;


 类似资料:
  • 本文向大家介绍MongoDB聚合功能浅析,包括了MongoDB聚合功能浅析的使用技巧和注意事项,需要的朋友参考一下 MongoDB数据库功能强大!除了基本的查询功能之外,还提供了强大的聚合功能。这里简单介绍一下count、distinct和group。 1.count:           2.distinct:     distinct用来找出给定键的所有不同的值。使用时也必须指定集合和键。  

  • 问题内容: 我有这样的表… 我想要这个… 使用PIVOT可以做到吗? 问题答案: 您可以使用MAX聚合,它将仍然有效。一个值的最大值=该值。 在这种情况下,您还可以在customerid上自我连接5次,并按每个表引用按dbColumnName进行过滤。它可能会更好。

  • 问题内容: 我正在寻找有关通过python中的spark可用的聚合功能的更好解释。 我的示例如下(使用来自Spark 1.2.0版本的pyspark) 输出: 我得到的预期结果是和4个元素的总和。如果我将传递给聚合函数的初始值更改为from, 则会得到以下结果 输出: 该值增加9。如果将其更改为,则该值为,依此类推。 有人可以向我解释该值是如何计算的吗?我希望该值增加1而不是9,希望看到相反的值。

  • 问题内容: 惊喜-这是MySQL中完全有效的查询: 如果您在Oracle或SQL Server中尝试了此查询,则会收到自然错误消息: 那么MySQL如何确定每个X显示哪个Y?它只是选择一个。据我所知,它只是选择找到的第一个Y。理由是,如果Y既不是聚合函数也不在group by子句中,则在查询中指定“选择Y”是没有道理的。因此,作为数据库引擎的我将返回我想要的任何东西,而您会喜欢它。 甚至还有一个M

  • 本文向大家介绍Springboot整合pagehelper分页功能,包括了Springboot整合pagehelper分页功能的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了Springboot整合pagehelper分页展示的具体代码,供大家参考,具体内容如下 一、添加依赖 查找maven中pagehelper的版本 在pom中添加依赖 二、使用 网络上很多文章都会说需要在appl

  • 是否有任何方法可以使用带聚合的弹性搜索进行分页?elasticsearch版本为2.3。以下是查询: