【问题标题】:How to divide two aggregates to get a percentage如何划分两个聚合以获得百分比
【发布时间】:2020-11-16 23:16:35
【问题描述】:

我正在尝试计算处理量与目标量的百分比。我已经能够分别计算出工作量和目标量,但是当我尝试获得百分比时,我的结果一直四舍五入到最接近的整数,我已经将它们转换为十进制,因为我期望结果以小数而不是百分比形式出现。

(CAST(COUNT(job_id) AS DECIMAL)/
(CAST(ROUND(SUM(review_time)/1000,2)/MAX(CAST(target_review_time AS DECIMAL)) AS DECIMAL))) AS Percentage

任何帮助将不胜感激,谢谢

【问题讨论】:

    标签: sql count sum max presto


    【解决方案1】:

    您正面临整数除法。运算的所有操作数都是整数,因此结果也以整数形式给出。

    您可以通过将其中一个操作数转换为小数来强制使用小数上下文:

    COUNT(job_id) / SUM(review_time) / MAX(target_review_time) / 1000.0  AS Percentage
    

    然后您可以round() 将结果设置为您想要的精度:

    ROUND(COUNT(job_id) / SUM(review_time) / MAX(target_review_time) / 1000.0, 2)  AS Percentage
    

    注意:如果job_id 不可为空,则COUNT(job_id) 更有效地写入COUNT(*)

    【讨论】:

      【解决方案2】:

      这基本上是你想要的吗?

      COUNT(*) * 1.0 / ( (SUM(Review_Time) / 1000.0) / MAX(target_review_time) )
      

      如果是这样,则对整个表达式进行强制转换和舍入。

      【讨论】:

        猜你喜欢
        • 2018-04-18
        • 1970-01-01
        • 1970-01-01
        • 2022-10-05
        • 1970-01-01
        • 1970-01-01
        • 2019-06-08
        • 2022-12-06
        • 1970-01-01
        相关资源
        最近更新 更多