【问题标题】:Mathematics operation between two columns inside oracle database (Describe the desired result)oracle数据库内两列之间的数学运算(描述所需的结果)
【发布时间】:2020-06-22 08:47:46
【问题描述】:

我有下表:

Name    Department  first_deg   second_deg  
John    IT              20          20      
David   Art             30          60      
Kadir   Music           40          85      
kevin   Sport           50          140     

我想在 sql 中做一些数学运算并找到 (first_deg,second_deg) 之间的结果

例如: 如果 first_deg,second_deg 它们相等,它将写入 null 如果 first_deg 是 second_deg 的两倍,它将写入 null 否则它必须给出不同的。

更多解释结果应该是这样的:

Name    Department  first_deg   second_deg  result
John    IT              20          20      null
David   Art             30          60      null
Kadir   Music           40          85      5
kevin   Sport           50          140     40

提前谢谢你:)

【问题讨论】:

  • 如果 second 是
  • CASE WHEN second_deg NOT IN (first_deg, 2*first_deg) THEN second_deg - 2 * first_deg END
  • 在第一个和第二个之间,它必须找到不同的并将其放入结果 colm 中:如果 second_deg = first_deg ---> result null............. 如果second_deg =2(first_deg) ---> 结果为 null ......如果 second_deg = 2(first_deg)+9 ---> 结果 9
  • 在 Oracle 中,您可以使用 nullif(mod(second_deg, first_deg), 0)

标签: mysql sql oracle


【解决方案1】:

我愿意

select Name  ,  Department , first_deg ,  second_deg ,
case when first_deg = second_deg then null
     when power(first_deg,2) = second_deg then null 
     when  power(first_deg,2) < second_deg then 
         second_deg - power(first_deg,2) 
  else null -- you did not explained what rule you want here therefore I put null
 end as result 
 from yourtable;

【讨论】:

  • 规则:在第一个和第二个之间,它必须找到不同的并将其放入结果 colm :如果 second_deg = first_deg ---> result null............ . 如果 second_deg =2(first_deg) ---> 结果为 null ................ 如果 second_deg = 2(first_deg)+9 ---> 结果 9 –
  • POWER 在这里没有用,也不会产生所需的结果。
  • 它工作完美Thankssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss这么多@Roberto Hernandez
【解决方案2】:

您可以使用CASE..WHEN 语句和MOD 如下:

SELECT T.*, 
       CASE 
         WHEN FIRST_DEG = SECOND_DEG OR SECOND_DEG = 2* FIRST_DEG THEN NULL
         ELSE MOD(SECOND_DEG, FIRST_DEG) 
         END AS RESULT 
    FROM YOUR_TABLE T

注意:您可以根据需要在CASE..WHEN语句中使用不同的条件。

【讨论】:

    【解决方案3】:

    我会把逻辑写成:

    (case when second_deg not in (first_deg, first_deg * 2)
          then second_deg - 2 * first_deg
     end) as result
    

    请注意,没有else 子句。如果条件不匹配,case 表达式将返回null

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-17
      • 1970-01-01
      • 2019-10-07
      • 2014-12-07
      • 1970-01-01
      • 2021-02-08
      • 2016-03-15
      • 1970-01-01
      相关资源
      最近更新 更多