【问题标题】:oracle greatest of two arithmetic expression valuesoracle 两个算术表达式值中的最大值
【发布时间】:2017-03-15 09:36:25
【问题描述】:

我需要为以下情况找到两个算术表达式中的最大值,但它只返回第一个表达式的结果。它没有得到两者中的最大值。请提供任何建议。

SELECT greatest((((Received*8) + (Received*56))/(1000*900*64000*900)),
                  (((Transmitted*8) + (Transmitted*56))/(1000*900*64000*900))) AS Greatest_value
FROM Table_name

我得到的结果:第一个表达式的算术 exp 结果

【问题讨论】:

  • 在您的情况下接收和传输的值是多少?
  • 它是一个动态值,每次都在变化

标签: oracle oracle12c arithmetic-expressions


【解决方案1】:

由于要比较的两个值的乘数相同,您可以将代码简化为:

SELECT GREATEST( Received, Transmitted ) * ( (8+56)/(1000*900*6400*900) )
         AS Greatest_value
FROM   table_name

或者只是:

SELECT GREATEST( Received, Transmitted ) / 810000000000
         AS Greatest_value
FROM   table_name

除此之外,您还需要检查您的数据:

SELECT COUNT( CASE WHEN Received >= Transmitted THEN 1 END ) AS received_greater,
       COUNT( CASE WHEN Received <  Transmitted THEN 1 END ) AS transmitted_greater
FROM   table_name;

【讨论】:

    猜你喜欢
    • 2011-12-18
    • 1970-01-01
    • 2014-07-14
    • 2023-01-14
    • 1970-01-01
    • 1970-01-01
    • 2023-03-24
    • 2011-01-25
    • 1970-01-01
    相关资源
    最近更新 更多