首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何计算小时间隔内的total_number - MySQL

如何计算小时间隔内的total_number - MySQL
EN

Stack Overflow用户
提问于 2017-06-23 18:44:03
回答 2查看 59关注 0票数 0

我有一个Mysql表,比如

代码语言:javascript
运行
复制
|Doctor_id | login_hour | logout_hour |
-------   -----------  -----------
 12         10          12
 13         11          13
 14         09          13
 15         13          14

我想知道每小时安排多少名医生。如果医生的日程安排在11点到13点之间,他应该出现在11号和12号hour.Kindly让我知道如何在MySQL中做到这一点

输出应如下所示

代码语言:javascript
运行
复制
Hour | Number_of_doctors
----   -----------------
10         2
11         3
12         2
13         1
EN

回答 2

Stack Overflow用户

发布于 2017-06-23 18:47:30

你可以使用内部SELECT,例如:

代码语言:javascript
运行
复制
SELECT DISTINCT t.login_hour,
(SELECT COUNT(*) FROM doctors WHERE login_hour <= t.login_hour AND logout_hour 
> t.login_hour) AS number_of_doctors
FROM doctors t
ORDER BY t.login_hour;

这是。

更新

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

代码语言:javascript
运行
复制
SELECT COUNT(*) 
FROM doctors WHERE login_hour <= ? AND logout_hour > ?;
票数 0
EN

Stack Overflow用户

发布于 2017-06-23 19:46:08

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

代码语言:javascript
运行
复制
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;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44719483

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档