sql-server - 计算给定时间段内预约请求的数量和可用医生的数量
问题描述
我有 3 张桌子,上面有时间段、医生预定的时间表和病人的预约请求。我想写一个查询来查找每个时间段可用的医生数量以及每个时间段的预约请求数量。
老虎机(10 分钟间隔)
Slot_id | 插槽 |
---|---|
1 | 2021-01-01 09:00 |
2 | 2021-01-01 09:10 |
3 | 2021-01-01 09:20 |
booking_gp_slots(为医生预订的时间段)
gp_id | 预订时隙开始 | 预订时隙结束 |
---|---|---|
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(患者的预订请求)
患者 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 | 插槽 | 全科医生可用 | 患者请求 |
---|---|---|---|
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
解决方案
推荐阅读
- javascript - jQuery 问题。如何敲击键盘以使其正常工作
- mongodb - 由于“无法连接到新的副本集主服务器”错误,无法从 mongo shell 连接集群
- c# - C#在一个类中的所有方法中捕获所有异常
- discord.js - Discord.js - 使用角色 ID Ping 角色
- java - Add SWT.OpenDocument SWT Listener to E4Application of RCP app
- machine-learning - 如何在CNN中选择过滤器的数量
- ruby-on-rails - 在 Rails 6 中排序 hstore 属性是如何工作的?
- r - 代码重构 - 代码改进建议
- angular - 在 AmChart 烛台图表上以 1 分钟间隔添加/显示日期时间
- string - Delphi 10.3:转换为字符串时出现 Blob 问题