您好,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
谢谢!
答案 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
答案 1 :(得分:0)
您需要为此使用开关功能
SELECT worker1, worker2,
CASE WHEN worker2 is not null
THEN (time_spent / 2)
ELSE time_spent END as time_spent
FROM test;