gpt4 book ai didi

sql - 用Sql计算酒店的峰值容量

转载 作者:行者123 更新时间:2023-12-02 22:22:53 25 4
gpt4 key购买 nike

有许多酒店的床位容量各不相同。我需要了解在任何给定的一天,每家酒店占用了多少张床。

示例数据:

 HOTEL      CHECK-IN     CHECK-OUT
A 29.05.2010 30.05.2010
A 28.05.2010 30.05.2010
A 27.05.2010 29.05.2010
B 18.08.2010 19.08.2010
B 16.08.2010 20.08.2010
B 15.08.2010 17.08.2010

中间结果:

HOTEL      DAY          OCCUPIED_BEDS
A 27.05.2010 1
A 28.05.2010 2
A 29.05.2010 3
A 30.05.2010 2
B 15.08.2010 1
B 16.08.2010 2
B 17.08.2010 2
B 18.08.2010 2
B 19.08.2010 2
B 20.08.2010 1

最终结果:

 HOTEL     MAX_OCCUPATION  
A 3
B 2

A similar question is asked before.我想获取两个日期之间的日期列表 ( as Tom Kyte shows ) 并使用 group by 计算每天的容量。问题是我的 table 比较大,我想知道是否有成本更低的方法来完成这项任务。

最佳答案

我认为没有比您在问题中概述的方法更好的方法了。创建您的日期表(或动态生成一个)。我个人喜欢随身携带,每年更新一次。

了解分析函数的人可能无需内部/外部查询就可以做到这一点,但由于内部分组是外部分组的子集,因此没有太大区别。

Select
i.Hotel,
Max(i.OccupiedBeds)
From (
Select
s.Hotel,
d.DayID,
Count(*) As OccupiedBeds
From
SampleData s
Inner Join
Days d
-- might not need to +1 depending on business rules.
-- I wouldn't count occupancy on the day I check out, if so get rid of it
On d.DayID >= s.CheckIn And d.DayID < s.CheckOut + 1
Group By
s.Hotel,
d.DayID
) i
Group By
i.Hotel

玩了一会儿之后,我无法在没有内部查询的情况下使用解析函数版本:

如果速度确实是一个问题,您可以考虑在主表上维护一个带有触发器的中间表。

http://sqlfiddle.com/#!4/e58e7/24

关于sql - 用Sql计算酒店的峰值容量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13423878/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com