如何解决SQL:您如何计算设施的占用率/在用数量?
我正在尝试计算更衣室中已占用的储物柜数量。数据集是这样的:
Locker ID Check-in Datetime Check-out Datetime Member ID
1 2/18/2021 08:15am 2/18/2021 10:20am A
2 2/18/2021 09:00am 2/18/2021 09:30am B
3 2/18/2021 09:15am 2/18/2021 11:05am C
4 2/18/2021 10:25am 2/18/2021 11:50am D
我的理想输出是每小时占用的储物柜数量:
Date Hour No. of Occupied Lockers
2/18/2021 8:00am - 9:00am 1
2/18/2021 9:00am - 10:00am 3
2/18/2021 10:00am - 11:00am 3
2/18/2021 11:00am - 12:00pm 1
我能够在 excel 中手动计算数量(“该小时内登记入住的储物柜数量”+“该小时内使用的储物柜数量”-“该小时内的退房数量” '),但我无法在 SQL-server 中计算它。我不知道如何检索编号。在上述公式中使用的储物柜数量。
我所说的“已占用”是指该小时内当前正在使用的储物柜。例如,如果用户 A 在上午 8:30 入住(开始使用)储物柜并在上午 10:30 退房(释放储物柜并停止使用),那么对于用户 A,将计算一个“已占用”储物柜分别在上午 8:00 - 8:59、上午 9:00 - 9:59 和上午 10:00 - 10:59。
解决方法
您需要生成小时数。然后就可以进行计算了。如果您想在这一小时内的任何时间:
with dt as (
select convert(datetime,'2021-02-18 08:00:00') as dt
union all
select dateadd(hour,1,dt)
from dt
where dt < '2012-02-18 11:00:00'
)
select dt,(select count(*)
from t
where t.checkin < dateadd(hour,dt.dt) and
t.checkout >= dt.dt
) as cnt
from dt;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。