计算给定时间段内的预约请求数量和可用医生数量

问题描述

我有 3 个表,其中包含时间段、医生的预约时间表和患者的预约请求。 我想编写一个查询来查找每个时间段可用的医生数量以及每个时间段内的预约请求数量

插槽(10 分钟间隔)

Slot_id 插槽
1 2021-01-01 09:00
2 2021-01-01 09:10
3 2021-01-01 09:20

booked_gp_slots(医生预约的时间段)

gp_id booked_slot_start booked_slot_end
10 2021-01-01 09:00 2021-01-01 10:00
10 2021-01-01 12:00 2021-01-01 12:20
24 2021-01-01 09:00 2021-01-01 09:40

request_slots(患者预约请求)

patient_id req_slot_start req_slot_end
1 2021-01-01 09:00 2021-01-01 09:30
3 2021-01-01 10:00 2021-01-01 10:30
5 2021-01-01 09:00 2021-01-01 09:40

样本输出

Slot_id 插槽 GP 可用 患者请求
1 2021-01-01 09:00 2 5
2 2021-01-01 09:10 1 6
3 2021-01-01 09:20 3 6

由于没有连接表的 ID,我发现很难统计可用医生和预约的数量。我的逻辑是检查医生预定的时段开始时间是否 > 时段时间,如果是这样的话,将它们加起来。我无法汇总来自 CTE 的列。

任何建议或帮助将不胜感激。

with gp_slot as(SELECT 
gp_id,booked_slot_start,booked_slot_end
FROM 
booked_gp_slots
)

Select 
SUM(CASE WHEN
    (SELECT gp_slot.booked_slot_start FROM gp_slot) > S.Slots THEN 1 ELSE 0 END) AS GP_availibily
FROM Slots 

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)