mysql—oracle数据库中两列之间的数学运算(描述所需结果)

kq4fsx7k  于 2021-07-24  发布在  Java
关注(0)|答案(3)|浏览(169)

我有下表:

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

我想在sql中做一些查询,做一些数学运算,并找到(第一个deg,第二个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

提前感谢:)

0s7z1bwu

0s7z1bwu1#

我会的

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;
2izufjch

2izufjch2#

你可以用 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 符合要求的报表。

a14dhokn

a14dhokn3#

我把逻辑写成:

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

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

相关问题