1
我想查询病人信息在医院的数据库。它包含他们的入学日期,出院日期,唯一标识符以及他们所在的病房。数据库与入院和出院日期
下面是一些样本数据
CREATE TABLE mytable
(
Identifier INTEGER NOT NULL PRIMARY KEY,
admission_Dt DATE NOT NULL,
DC_dt DATE NOT NULL,
Ward DATE NOT NULL
);
INSERT INTO mytable(Identifier, admission_Dt, DC_dt, Ward)
VALUES (1, '1/01/2016', '6/01/2016', 'Med 1');
INSERT INTO mytable(Identifier, admission_Dt, DC_dt, Ward)
VALUES (2, '3/01/2016', '4/01/2016', 'Med 1');
INSERT INTO mytable(Identifier, admission_Dt, DC_dt, Ward)
VALUES (3, '4/01/2016', '7/01/2016', 'Sur 1');
INSERT INTO mytable(Identifier, admission_Dt, DC_dt, Ward)
VALUES (4, '2/01/2016', '5/01/2016', 'Sur 1');
INSERT INTO mytable(Identifier, admission_Dt, DC_dt, Ward)
VALUES (5, '2/01/2016', '3/01/2016', 'Med 1');
INSERT INTO mytable(Identifier, admission_Dt, DC_dt, Ward)
VALUES (6, '5/01/2016', '6/01/2016', 'Sur 1');
我希望我的查询每天的范围和数量的每一天有多少患者在病房返回结果。他们被定义为在入院日期和出院日期之间的当天处于病房。
结果应该是这样的
+------------+-------+---------------+--+
| Date | Ward | Patient count | |
+------------+-------+---------------+--+
| 1/01/2016 | Med 1 | 1 | |
| 2/01/2016 | Med 1 | 2 | |
| 2/01/2016 | Sur 1 | 1 | |
| 3/01/2016 | Med 1 | 2 | |
| 3/01/2016 | Sur 1 | 1 | |
| 4/01/2016 | Med 1 | 1 | |
| 4/01/2016 | Sur 1 | 2 | |
| 5/01/2016 | Med 1 | 1 | |
| 5/01/2016 | Sur 1 | 2 | |
+------------+-------+---------------+--+
我可以查询到在同一个日期用下面的查询返回的值。但是我必须在查询中定义日期。
select count(identifier), Ward
from my_table
where admission_Dt > 20160102 and DC_dt< 20160103
group by Ward
返回此结果
+-------+---------------+--+
| Ward | Patient_count | |
+-------+---------------+--+
| Med 1 | 2 | |
| Sur 1 | 1 | |
+-------+---------------+--+
但是我真的很追求的是一个日期范围运行此,输出是每个日期的名单,与患者每一天的计数。
生成一个日期表,并在admission_dt和dc_dt之间的日期间执行JOIN。如果你有一个较低和较高的范围,有很多方法可以即时创建日期表。如果您标记特定的rdbms(mysql,sql-server,oracle)等,人们将能够更好地为您提供帮助。 – Matt
您需要知道您开始接受治疗的患者人数。计算入院和出院只会告诉你病房病人数量的变化。 – david25272