首页 > 解决方案 > SQL如何有条件地将值与另一个表中的条件相加

问题描述

我需要一个查询来汇总用户的总可用服务器时间:每台服务器必须在线,在服务器时间可供用户使用的那一天。

我拥有的服务器状态数据来自如下表(表 1):

serverid   status    changedate  changestatusid
server2    Offline   10-02-19    1 
server2    Online    26-02-19    2
server1    Online    01-04-19    3  
server1    Offline   02-05-19    4
server1    Online    06-05-19    5   
server2    Offline   15-07-19    6

每天的可用时间来自另一个表,并且取决于用户的类型-userclass-(表2):

Location  userclass  date      timeavail 
PERU      type-A     01-04-19  08:00 
PERU      type-B     01-04-19  06:00
USA       type-A     01-04-19  08:00
USA       type-C     01-04-19  07:00
PERU      type-A     02-04-19  08:00

最后,用户注册在另一个表(表 3)上:

userid  firstname  lastname  userclass  location
user1   Juan       Obrero    type-A     PERU
user2   Michael    Stevens   type-B     USA
user3   Brett      McDonald  type-C     USA

到目前为止,我已经完成的是:

select tb3.location,
       tb3.userid,
       tb2.date,
       sum(tb2.timeavail) as hours 
from Table3 as tb3
right join Table2 as tb2
on tb2.userclass = tb3.userclass

哪个总和从服务器到每个用户的总可用时间,但是我如何考虑服务器状态?

标签: sql

解决方案


推荐阅读