SQL-两个工人一次过滤

时间:2018-12-05 09:02:18

标签: php mysql sql

您好,stackoverflow的高手。我需要SQL帮助。

情况:需要过滤掉工人并增加他们的工作时间。

数据库:

worker1    worker2    time_spent_in_seconds
X                     60
X          Y          60
Z          X          60

条件:如果worker1和worker2一起工作,他们的时间将除以2 我期望得到的结果:

X=120
Y=30
Z=30

谢谢!

2 个答案:

答案 0 :(得分:2)

您可以通过使用全部合并尝试以下方式

    select worker,sum(val) from 
    (   select worker1 as worker , case when worker2 is not null
     then  time_spent/2 else time_spent end as val from test
    union all
    select worker2 , case when worker2 is not null
     then  time_spent/2 else time_spent end as val from test
    ) t where worker is not null
    group by worker

worker  sum(val)
X       120
Y       30
Z       30

Demo link

答案 1 :(得分:0)

您需要为此使用开关功能

SELECT worker1, worker2, 
CASE WHEN worker2 is not null
     THEN (time_spent / 2)
     ELSE time_spent  END as time_spent
FROM test;

https://www.db-fiddle.com/f/h3KhBUVSQckeGXRheVPstt/0