【问题标题】:Calculating the sum of two aggregations with a case clause使用 case 子句计算两个聚合的总和
【发布时间】:2023-02-23 01:13:45
【问题描述】:

我在尝试使用聚合语法时遇到困难。我想根据一列中值的总和和使用 case when 语句的另一列的计数值除以第三列的总和来计算百分比。我的代码如下所示:

round(sum(tb1.col1) + count(case when tb2.col2 = 1 then 1 ELSE NULL END) / sum(tb1.col3), 2)

连接了所有表的数据将类似于以下内容,我在上面共享的代码中应用了各个聚合:

tb1.col1 | tb2.col2 | tb1.col3
10        5          50

使用以上数据,我希望我的代码返回 (10+5)/(50) = 0.3,但目前我的代码只返回与 tb1.col1 = 10 相同的值。

如果有人能发现我的语法不正确的地方,我将不胜感激!

非常感谢

安德鲁

【问题讨论】:

    标签: sql oracle-sqldeveloper


    【解决方案1】:

    我刚刚弄明白了 - 原来我没有足够的括号!

    round((sum(tb1.col1) + count(case when tb2.col2 = 1 then 1 ELSE NULL END)) / sum(tb1.col3),2)

    【讨论】:

    • 根据您的描述,我认为您还需要根据您的问题描述将计算 col2 从 count() 更改为 sum() ,
    猜你喜欢
    • 2013-06-10
    • 2019-02-16
    • 2012-05-04
    • 1970-01-01
    • 2011-11-27
    • 2014-02-07
    • 1970-01-01
    • 2012-03-08
    • 2019-10-23
    相关资源
    最近更新 更多