如何计算小时之间的总_数-MySQL

如何计算小时之间的总_数-MySQL,mysql,sql,Mysql,Sql,我有一个类似Mysql的表 |Doctor_id | login_hour | logout_hour | ------- ----------- ----------- 12 10 12 13 11 13 14 09 13 15 13 14 我想知道每小时安排多少医生。如果医生的日程安排在11点到13点之间,他应该在11点到12点出现。请告诉我

我有一个类似Mysql的表

|Doctor_id | login_hour | logout_hour |
-------   -----------  -----------
 12         10          12
 13         11          13
 14         09          13
 15         13          14
我想知道每小时安排多少医生。如果医生的日程安排在11点到13点之间,他应该在11点到12点出现。请告诉我怎么做

输出应该是

Hour | Number_of_doctors
----   -----------------
10         2
11         3
12         2
13         1
您可以使用内部选择,例如:

这是我的建议

更新

这将假设至少有一名医生登录,正如草莓所说的那样。如果您需要在任何给定时间登录的医生总数,则可以使用以下查询:

SELECT COUNT(*) 
FROM doctors WHERE login_hour <= ? AND logout_hour > ?;

这里有一个想法——但正如在评论中所说的,我实际上会在应用程序代码中处理大部分内容

SELECT x.hour
     , COUNT(*) total
  FROM
     ( SELECT  9 hour UNION 
       SELECT 10 UNION
       SELECT 11 UNION
       SELECT 12 UNION
       SELECT 13 UNION
       SELECT 14 
     ) x
  JOIN my_table y
    ON x.hour >= y.login_hour 
   AND x.hour < y.logout_hour
 GROUP
    BY hour;

考虑在应用程序代码中处理显示问题。此外,您的数字不相加。如果13等于1,那么12必须等于2。@草莓:对不起。是的,12应该是2。我正在更改它。这假设在任何给定时间至少有一名医生登录。@Darshan:查询输出似乎不正确。@草莓:我想知道每小时安排了多少名专家。@Pravenreddy请参阅上面的评论。此外,除结果为0或NULL外,我倾向于认为如果答案与所需输出不匹配,那么它可能是错误的,或者充其量是不完整的。问题是,如果医生在22:00到02:00之间工作:00@OtoShavadze对时间是线性的。格洛丽亚·蒙迪。
SELECT x.hour
     , COUNT(*) total
  FROM
     ( SELECT  9 hour UNION 
       SELECT 10 UNION
       SELECT 11 UNION
       SELECT 12 UNION
       SELECT 13 UNION
       SELECT 14 
     ) x
  JOIN my_table y
    ON x.hour >= y.login_hour 
   AND x.hour < y.logout_hour
 GROUP
    BY hour;