我有一个包含的结果集; order_id,该订单的总计以及其中的商品数量。
有些总数是负的(如果发生退款),而其他总数是正的。我想计算出order_total的订单数,但不排除负值。
orders_id order_total products_quantity customers_id
--------- ------------- ----------------- --------------
1140898 -99.95830000 -1 459800
1140868 99.95830000 1 459800
1140867 99.95833333 1 459800
866932 -106.33333333 -2 459800
860100 125.08333333 3 459800
857864 106.33333333 2 459800
会导致
orders_id order_total products_quantity customers_id
--------- ------------- ----------------- --------------
1140867 99.95833333 1 459800
860100 125.08333333 3 459800
我试图编写一个游标来遍历每个结果,存储最后的order_total并检查当前行的差异。
只要负序出现在正序之前或之后,此方法就起作用。不幸的是,情况并非总是如此。
任何人都可以解释我应遵循哪些方法/方法以确保实现以下输出吗?
答案 0 :(得分:1)
根据您的描述,该问题是不可能的。考虑:
orders_id order_total customers_id
--------- ------------- --------------
1 -100 1
2 50 1
3 50 1
4 50 1
(我假设您只想考虑每个值仅影响特定客户的“净值”)
在上述情况下,可以考虑将orders_id = 1偏移2和3,在输出中保留4,3 4在输出中保留2,或者2和4在输出中保留3。
如果金额为负的行与金额为正的行中的一个或多个不完全匹配怎么办?即使负数的 some 组合等于正数的某种组合,您也需要尝试所有可能的组合-仅计算该算法的阶数会使我的头部受伤(O(N!)^ 2我认为)。