问题是:
使用SQL查找所有房间所需的最小可用房间数 会议将毫不拖延地按时举行。
这是会议的时间表。
start end
8 9.15
10 14
13.2 15.2
13.55 16.45
14 17.45
14.05 17.45
我找到了一种使用pandas在Python中完成此操作的方法,但不确定如何使其在SQL中工作。我找到了一些解决方案,但这些解决方案类似于仿真,并且我认为有一种更优雅的方法可以解决此问题。
这是Python代码:
number_of_rooms = []
for i in range(len(data)):
rooms = 1
for j in range(len(data)):
if data['start'][i]<data['end'][j] and data['start'][i]>data['start'][j]:
rooms = rooms + 1
number_of_rooms.append(rooms)
答案 0 :(得分:1)
这是您在SQL查询中的逻辑的翻译:
SELECT i.start, i.end, COUNT(*) number_of_rooms
FROM rooms i
LEFT JOIN rooms j ON i.start < j.end AND i.start > j.start
GROUP BY i.start, i.end
查询处理表中的每个记录(别名i
)。自联接将拉入同一表(j
)中满足时间间隔重叠条件的所有记录。然后GROUP BY
子句汇总i
的每个记录的数据,而COUNT()
为您提供j
中匹配记录的数量。