数据库逻辑问题

数据库是这样的
id ,开启时间(以秒为单位),关闭时间(以秒为单位),使用时长(秒为单位),日期

之前我想得到 每个个小时的使用 的使用时长
从0小时开始 到24点结束

int i = 0; 
for
{
select Sum(useTime) from table where openTime = 3600 * i and colseTime = 3600 * i+1
}

这样处理的确能得到一部分 每小时的使用时长。 可是在某些情况下取不到值
比如 在4.58 - 5.01 这样的的数据并不能满足 查询语句的要求 。 也就查不到这样的值。
正确的逻辑应该是 4.58 到 5.00 记在 16.00 这条数据的使用时间内 。 5.00 - 5.01 纪录在17的数据内

阅读 1.9k
1 个回答

大概思路

 select (close-open) as useTime from (select case when openTime<3600*i then 3600*i else openTime end as open,case when closeTime >3600*i+3600 then 3600*i+3600 else closeTime end as close from tabel where openTime <= 3600*I and closeTime>=3600*i )

好久没写sql了,语句不知道会不会有问题

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题