我有一个Mysql表,比如
|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中做到这一点
输出应如下所示
Hour | Number_of_doctors
---- -----------------
10 2
11 3
12 2
13 1
发布于 2017-06-23 18:47:30
你可以使用内部SELECT
,例如:
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所说的那样)。如果您想要在任何给定时间登录的医生总数,那么您可以使用以下查询:
SELECT COUNT(*)
FROM doctors WHERE login_hour <= ? AND logout_hour > ?;
发布于 2017-06-23 19:46:08
这里有一个想法--但正如评论中所说,我实际上会在应用程序代码中处理大部分……
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;
https://stackoverflow.com/questions/44719483
复制相似问题