sql - 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
哪个总和从服务器到每个用户的总可用时间,但是我如何考虑服务器状态?
解决方案
推荐阅读
- ios - 来自tableview的pdf,包含100个单元格
- r - R Studio 编码
- unit-testing - 如何对名为 CoroutineScope.launch 的函数进行单元测试
- python - 如何将当前活动用户作为外键添加到 django 3 中的任务模型?
- javascript - 访问 Faker 图像时出现 UnhandledPromiseRejectionWarning 错误?
- java - 通过 R 设置多节点 h2o 集群:加入第二个节点时出现问题
- java - 尽管满足其条件,但方法从未达到 if 语句
- php - 使用 substr 获取可能不同长度的字符串
- excel - 从 Start_Date 到 End_Date 计算年份
- java - Apache Beam:分区转换后如何继续管道?