假设我有2张表T1
,T2
如下所示
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。以下是查询: