【发布时间】:2020-10-01 17:50:04
【问题描述】:
作为 SQL 查询的一部分,作为聚合的一部分,我想将其转换为 dplyr 语法:
case when sum(amy_jan) != 0 then sum(cost_jan)/sum(amy_jan) else 0 end as ratio_jan
-- ...
case when sum(amy_dec) != 0 then sum(cost_dec)/sum(amy_dec) else 0 end as ratio_dec
在 dplyr 语法中会是什么样子?
【问题讨论】:
-
billrowe,您之前的 8 个问题中有 7 个有答案,但其中没有一个包含您的评论,即答案没有解决您的问题。请返回accept them。虽然选择不接受答案当然是您的权利,但这违反了 Stack 网站上的礼仪和礼貌。谢谢。
-
您不能只将其转换为 dplyr。 SQL 不执行为。是。数据库从非常不同的查询创建执行计划,可能决定缓存中间结果,确保总和只计算一次等。您必须考虑如何以有效的方式进行计算并避免例如计算
sum(amy_dec)多次超过1M 行。您不太可能比拥有数十个内核和 GB 内存的数据库服务器更快地执行这些计算 -
谢谢。欣赏洞察力。