我有两个相同长度的列表&如果它们的差异小于5,则要从两者中删除值:
SELECT o.order_id
, o.server
, o.subtotal
, o.discount
, o.tax
, o.total
, (SELECT (SUM(o2.total) - SUM(p.total_collected))
from orders o2
JOIN payments p
ON o2.order_id = p.order_id
WHERE o2.order_id = o.order_id) as 'Due'
FROM orders o
WHERE...;
我想删除,例如第二个&每个使用列表理解的第三个值:
SELECT o.order_id
, o.server
, o.subtotal
, o.discount
, o.tax
, o.total
, o.total - c.Collected AS 'Due'
FROM orders o
JOIN (
SELECT p2.order_id, SUM(p2.total_collected) AS 'Collected'
FROM payments p2
GROUP BY p2.order_id) AS c
ON o.order_id = c.order_id
WHERE...;
然而,每行的'for'部分存在错误(语法无效)。这是由于第一个y&我该怎样阻止这个?
答案 0 :(得分:0)
你把if放在错误的地方 - 应该在最后;这里是如何获得没有值的列表:
x_mod = [x for x, y in zip(X_List, Y_List) if abs(x-y)>5]
Y_List = [y for x, y in zip(X_List, Y_List) if abs(x-y)>5]
X_List = x_mod
第一个列表不是直接修改的,而是写入temp var。如果是,就像在原始资源中一样,那么第二次理解就必须使用已经修改的X_List,并且不会产生所需的结果。
我也使用了两个值的绝对差值b / n,因为你已经说过两者之间的差异应该大于5,不是Y_List的成员应该大于5。