2016-03-29 18 views
1

次のような表があります。行と2つのグループ間の平均時差の計算

PAT_ID  ROOMED_DT    CHECKOUT_DT   ROOM_NUM 
1   11/12/2015 03:22PM  11/12/2015 06:30PM Room 4 
2   11/12/2015 07:40PM  11/12/2015 10:30PM Room 4 
3   11/12/2015 10:55PM  11/12/2015 11:30PM Room 4 
4   11/12/2015 09:45AM  11/12/2015 12:00PM Room 5 
5   11/12/2015 12:02PM  11/12/2015 01:30PM Room 5 
6   11/12/2015 02:25PM  11/12/2015 04:30PM Room 5 
7   11/13/2015 07:22AM  11/13/2015 08:04AM Room 2 
8   11/13/2015 09:40AM  11/13/2015 10:30AM Room 2 
9   11/13/2015 10:55AM  11/13/2015 11:55AM Room 2 
10   11/13/2015 12:45PM  11/13/2015 02:00PM Room 1 
11   11/13/2015 04:02PM  11/13/2015 05:30PM Room 1 
12   11/13/2015 05:25PM  11/13/2015 08:30PM Room 1 

私は計算に平均時間をしたいと思います。これは、患者が部屋を与えられたときROOMED_DTがあること、およびCHECKOUT_DTは、患者が残すためにクリアされた時間であることと、緊急ケアセンターからのデータであります前回の患者が退院してから(CHECKOUT_DT)、次の患者が出現するまで(ROOMED_DT)、各日ごとに、結果は次のようになります(私は平均的な数値を上げています次の患者への時間は分である。

SERVICE_DT  TIME_TO_NEXT_PAT 
11/12/2015  65.7 
11/13/2015  72.4 

しかし、私は複数の患者や複数の部屋間CHECKOUT_DTとROOMED_DT間の差異を説明するかどうかはわかりません。誰にもアイデアはありますか?私はNetezzaを使用しています。

答えて

0

これらの結果を得るには、lead解析関数を使用できます。ここ

は、クエリ

SELECT SERVICE_DATE 
, AVG(MINUTES_BETWEEN) 
FROM (
     SELECT PAT_ID 
     , ROOMED_DT::DATE SERVICE_DATE 
     , ROOMED_DT 
     , CHECKOUT_DT 
     , ROOM_NUM 
     , LEAD(ROOMED_DT,1) OVER (PARTITION BY ROOM_NUM ORDER BY ROOMED_DT) NEXT_CHECKED_IN 
     , MINUTES_BETWEEN(NEXT_CHECKED_IN,CHECKOUT_DT) 
     FROM SAMPLE 
     ORDER BY 1 
) FOO 
WHERE MINUTES_BETWEEN IS NOT NULL 
GROUP BY 1; 

SERVICE_DATE | AVG 
--------------+----------- 
2015-11-12 | 38.000000 
2015-11-13 | 62.000000 
(2 rows) 
ある
関連する問題