假设我有下表:
这里A-B-C-D是购物车。我想买推车里的东西。项目的价格在每一行中。例如,购物车A有6个价格(10,9,8,7,6,5)的商品。
我只想在一个给定的推车中购买一个项目,如果在另一个推车中没有更便宜的项目,否则我想从另一个推车中购买该项目。当我购买每件物品时,我会将其标记为已购买。而且每个购物车都有不同的购买能力。对于A,我可以购买的最大值是5,对于B是6,对于C是4,对于D是1。
A车是锚,所以如果A车达到容量,我们就停下来。
所以事情会是这样的。
购买:
既然A达到了它的容量,它就到此为止了。
如何在SQL中执行此操作。我想我可以使用一个循环,但我读过SQL是为了提高效率而基于设置的。我试图做的似乎需要一个循环或递归。这是正确的方法吗?我应该使用Python来完成这件事吗?
谢谢你的帮助!
如果我没有理解错的话,您可以通过取消转轴、枚举行和筛选来非常容易地完成此操作:
select t.*
from (select cart, val,
row_number() over partition by cart order by val) as seqnum
from ((select 'A' as cart, A as val from t) union all
(select 'B' as cart, B from t) union all
(select 'C' as cart, C from t) union all
(select 'D' as cart, D from t)
) t
) t
where (cart = 'A' and seqnum <= 5) or
(cart = 'A' and seqnum <= 6) or
(cart = 'A' and seqnum <= 4) or
(cart = 'A' and seqnum <= 1)
order by val;
注意:根据您正在使用的数据库,可能有更简单的方法来取消透视。
问题内容: 我有一个方法必须执行以下操作: 我想指定嵌套的数量(在上述情况下,我希望嵌套15个)。这里有一种使用递归编程的方法吗? 问题答案: 是。这可以通过递归编程来执行。 我假设您不喜欢在源代码中写下这些嵌套的代码-如您的示例所示,因为这确实是丑陋的编程-如评论员所解释。 下面的代码(类似于Java的伪代码)对此进行了说明。我假设嵌套的深度固定。然后,您实际上想循环遍历尺寸深度的整数向量。 数
问题内容: 在查找循环方面已经存在一些问题,但是我没有找到SQL的解决方案(首选MSSQL)。 这些表将是Node(NodeID INT)和Edge(EdgeID INT,NodeID1 INT,NodeID2 INT) 在有向图中找到周期的性能很好的解决方案是什么? 问题答案: 该解决方案非常简单明了,但时间更长: 首先,将生成通过该图的所有路径的列表,以使任何路径都不会包含同一条边。 从此信息
问题内容: 对于我开发的某些应用程序(后来逐渐忘记了),我一直在编写纯SQL,主要是针对MySQL。尽管我在SQLAlchemy之类的python中使用过ORM,但是我并没有坚持很长时间。通常,这是文档或复杂性(从我的角度来看)使我退缩。 我这样看:如果要使用一种类型的数据库,则使用ORM进行可移植性,使用普通SQL。我真的在寻求有关在开发需要数据库支持的应用程序时何时使用ORM或SQL的建议。
问题内容: 我有下表所示的表 我们有包含“领导者ID”的表 问题陈述: 此问题是通过使用Employee及其Manager数据来确定Manager的负责人。 关于:我们有一个员工ID和他们的经理ID。请注意,经理ID来自员工ID。由于每位经理都有一个高于其级别的经理。 首先,我们将在Manager ID列中获取所有UNIQUE ID。然后,对于Manager ID列中的每个ID,我们将查找其各自的
问题内容: 我不是SQL专家,但是如果有人可以帮助我。 我使用递归CTE来获取如下值。 Child1 –> Parent 1 Parent1 –> Parent 2 Parent2 –> NULL 如果数据填充出错,那么我将遇到以下类似情况,因此CTE可能会进入无限递归循环并给出最大递归错误。由于数据量很大,因此我无法手动检查此 错误数据 。请让我知道是否有办法找到它。 Child1 –> Par
本文向大家介绍详解python使用递归、尾递归、循环三种方式实现斐波那契数列,包括了详解python使用递归、尾递归、循环三种方式实现斐波那契数列的使用技巧和注意事项,需要的朋友参考一下 在最开始的时候所有的斐波那契代码都是使用递归的方式来写的,递归有很多的缺点,执行效率低下,浪费资源,还有可能会造成栈溢出,而递归的程序的优点也是很明显的,就是结构层次很清晰,易于理解 可以使用循环的方式来取代递归