我想做的是创建一个SUM case语句,就像Excel中的sumifs一样。我将拉入R进行进一步的分析,但认为在MySQL中运行一次此查询并拉入R会更快。
因此,在Excel中,它可与=SUMIFS(I:I,H:H,"Shipping",G:G,G7,F:F, F7)
(此公式位于“ total_cost”列中)一起使用。
其中H列是process
,G列是order_no
,F列是parent_name
在此示例中,我不确定的部分是如何在整个范围内匹配行值G7和F7(或者考虑到这个小db有几百万行* 45列,即使这样做很有效),也会填充total_cost该单元格的列。
因此,在下面,我尝试获取每个父母每个订单号的订单总费用。所有订单中都有流程(编译,包装,运输),运输结束。因此,在“总计成本”列中,当流程=发货时,它将汇总当前行的order_no
和parent_name
的所有成本。
我在下面看到“组功能的无效使用”。我尝试遵循This SUMIFS in SQL Post,但似乎无法适合GROUP BY
的工作。
UPDATE m.data
set total_cost =
IF(process = 'Shipping',
SUM(case when order_no = order_no
AND parent_name = parent_name
THEN sum(process_cost) else 0 END), "")
或者让我知道您是否有更好的方法。
最佳答案
您可以通过order_no对总和组使用内部联接进行更新
update data
inner join (
select order_no , sum(process_cost) as my_sum
from data
group by order_no
) t on t.order_no = data.order_no and data.process= 'Shipping'
set total_cost = my_sum
关于mysql - Sumifs SQL表匹配行值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45150975/