删除彼此网状的行

时间:2018-07-31 11:28:18

标签: mysql sql database

我有一个包含的结果集; 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并检查当前行的差异。

只要负序出现在正序之前或之后,此方法就起作用。不幸的是,情况并非总是如此。

任何人都可以解释我应遵循哪些方法/方法以确保实现以下输出吗?

1 个答案:

答案 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我认为)。