![](/img/trans.png)
[英]MySQL query to count total number of orders made by hour returns always 1 for each hour
[英]how to count the total_number in between hour's - MySQL
我有一个Mysql表
|Doctor_id | login_hour | logout_hour |
------- ----------- -----------
12 10 12
13 11 13
14 09 13
15 13 14
我想知道每小时安排多少医生。 如果医生的时间表在11到13之间,那么他应该在11和12个小时出现。请让我知道如何在MySQL中执行此操作
输出应该像
Hour | Number_of_doctors
---- -----------------
10 2
11 3
12 2
13 1
您可以使用内部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;
这是SQL Fiddle 。
更新
这将假定至少有一位医生已登录(正如Strawberry正确地说的那样)。 如果您希望在任何给定时间登录的医生总数,则可以使用以下查询:
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;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.