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