Поскольку я готовлю свои данные для прогнозирования неявок в больнице, я столкнулся со следующей проблемой: В приведенном ниже запросе я попытался получить количество показов / неявок, относящихся к числу встреч (APPTS). ). INDICATION_NO_SHOW означает, появился ли пациент на приеме. 0 означает показ, а 1 означает не показывать.
with t1 as
(
select
PAT_ID
,APPT_TIME
,APPT_ID
,ROW_NUMBER () over(PARTITION BY PAT_ID order by pat_id,APPT_TIME) as [TOTAL_APPTS]
,INDICATION_NO_SHOW
from appointments
)
,
t2 as
(
t1.PAT_ID
,t1.APPT_TIME
,INDICATION_NO_SHOW
,sum(INDICATION_NO_SHOW) over(order by PAT_ID, APPT_TIME ) as TOTAL_NO_SHOWS
,TOTAL_APPT
from t1
)
SELECT *
,(TOTAL_APPT- TOTAL_NO_SHOWS) AS TOTAL_SHOWS
FROM T2
order by PAT_ID, APPT_TIME
Это привело к следующему набору данных:
PAT ID APPT_TIME INDICATION_NO_SHOW TOTAL_SHOWS TOTAL_NO_SHOWS TOTAL_APPTS
1 1-1-2001 0 1 0 1
1 1-2-2001 0 2 0 2
1 1-3-2001 1 2 1 3
1 1-4-2001 0 3 1 4
2 1-1-2001 0 0 1 1
2 2-1-2001 0 1 1 2
2 2-2-2001 1 1 2 3
2 2-3-2001 0 2 2 4
Как вы можете видеть, мой запрос работал только для пациента 1, а затем он также считает неявки для пациента 1 для пациента 2. Таким образом, индивидуально он работал для 1 пациента, но не для всего набора данных.
Сработал столбец TOTAL_APPTs, поскольку он подсчитывал количество апплетов пациента имел в данный момент данное прибл. Мой вопрос: как я могу успешно добавить эти показы и неявки (как я сделал для пациента 1)? Я полностью осознаю, почему этот запрос не работает, я просто в отчаянии, как это исправить ..