gpt4 book ai didi

sql - 微软 SQL : is it possible to solve this task in SQL without T/PL sql?

转载 作者:行者123 更新时间:2023-12-04 18:20:04 25 4
gpt4 key购买 nike

我正在尝试一项任务“计算举办所有 session 所需的最少房间数”。结果应为“4”。

table 上 session 是这样的:

table .

我尝试在 m2.end > m1.start 和 m2.start < m1.end 和 m1.id<>m2.id 上使用 inner join 来获取 session 冲突,在其他情况下我尝试使用相反的条件显示 session 不会发生碰撞。

现在我正在尝试寻找在房间中召开 session 的条件,但我卡住了。任何提示或解决方案?表插入是这样的,开始和结束是 varchars 所以他们需要转换为时间:

insert into meetings(id, start1, end1)  
values
(1, '08:00', '09:00'),
(3, '11:00', '14:15'),
(4, '14:15', '16:00'),
(5, '14:00', '17:00'),
(6, '10:00', '16:00')

可视化解决方案可以是这样的:solution_pic - 需要 4 个房间

最佳答案

您正在寻找最大 session 数发生的时间。

你可以用累计和来做到这一点:

with m as (
select m.start as dt, 1 as inc
from meetings
union all
select m.end as dte, -1
from meetings
)
select sum(sum(inc)) over (order by dt) as concurrent
from m
group by dt
order by concurrent_desc
fetch first 1 row only;

session 开始和结束时的 CTE 标记。外部查询执行累加和并返回最高值。

关于sql - 微软 SQL : is it possible to solve this task in SQL without T/PL sql?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59334801/

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