我想做的是创建一个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_noparent_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/

10-11 21:13