社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  DATABASE

会议日程问题。如何将此代码转换为MySQL(或任何其他SQL)

Nikita Lis • 5 年前 • 1440 次点击  

问题是:

使用SQL查找所有可用房间所需的最小数量 会议将按时、无延误地举行。

这是会议日程安排。

    start   end
     8       9.15
    10      14
    13.2    15.2
    13.55   16.45
    14      17.45
    14.05   17.45

我在Python中找到了一种使用pandas的方法,但不知道如何在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)
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/51713
 
1440 次点击  
文章 [ 1 ]  |  最新文章 5 年前
GMB
Reply   •   1 楼
GMB    6 年前

下面是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 ). self join在同一个表中拉入所有记录( j )满足时间间隔重叠条件的。然后 GROUP BY 子句聚合每个记录的数据 ,和 COUNT() 提供中匹配记录的数目 j型 .