php - SQL - 两个 worker 一次过滤

标签 php mysql sql

stackoverflow 的大师们大家好。我需要 SQL 帮助。

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

数据库:

worker1    worker2    time_spent_in_seconds
X                     60
X          Y          60
Z          X          60

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

X=120
Y=30
Z=30

谢谢!

最佳答案

您可以使用 union all 尝试以下方式

    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

关于php - SQL - 两个 worker 一次过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53628559/

相关文章:

php - 错误中给出的警告 : mysql_fetch_array() expects parameter 1 to be resource, bool 值

mysql - 如何将包含双引号的字符串添加到sql数据库?

php - 为什么 laravel 序列化 session 数据而不是 session 编码/解码

php - 就像 MySQL 和 PHP 中的逗号分隔列表一样

mysql - MySQL如何计算从日期到日期?

MYSQL innoDB SELECT FOR UPDATE with LEFT JOIN

c# - 无法启用此约束,因为并非所有值都具有相应的父值

sql - 如何根据最大日期获取不同的记录?

php - 通过向数据库添加空键并使用编辑表单来消除 'new' 表单

mysql - 内联注释如何绕过 SQL 注入(inject) Web 应用程序防火墙?