Моя цель - рассчитать совокупные значения времени ожидания 90-го процентиля для пациентов, которые ожидали получения услуги в 3 больницах в течение 5 периодов.
Каждый период соответствует определенной временной шкале (например, период 1 (P01) означает, что пациент получал обслуживание в период с 1 апреля 2018 года по 3 мая 2018 года, период 2 (P02, обслуживание в период с 5 мая 2018 года по май) 31, 2018).
Мой оригинальный запрос очень сложен, и вот его упрощенная версия.
Моя таблица состоит из 3 столбцов:
CREATE TABLE Mytable1(
period varchar2(10),
hospital varchar2(100),
wait_days int
);
Затем вводятся значения времени ожидания (в днях), по пять для каждой больницы, поскольку существует 5 периодов.
INSERT ALL
INTO Mytable1(period,hospital,wait_days) VALUES ('P01', 'NANAIMO HOSPITAL',182)
INTO Mytable1(period,hospital,wait_days) VALUES ('P02','NANAIMO HOSPITAL',187)
INTO Mytable1(period,hospital,wait_days) VALUES ('P03','NANAIMO HOSPITAL',188)
INTO Mytable1(period,hospital,wait_days) VALUES ('P04','NANAIMO HOSPITAL',182)
INTO Mytable1(period,hospital,wait_days) VALUES ('P05','NANAIMO HOSPITAL',190)
INTO Mytable1(period,hospital,wait_days) VALUES ('P01','VICTORIA HOSPITAL',230)
INTO Mytable1(period,hospital,wait_days) VALUES ('P02','VICTORIA HOSPITAL',241)
INTO Mytable1(period,hospital,wait_days) VALUES ('P03','VICTORIA HOSPITAL',245)
INTO Mytable1(period,hospital,wait_days) VALUES ('P04','VICTORIA HOSPITAL',237)
INTO Mytable1(period,hospital,wait_days) VALUES ('P05','VICTORIA HOSPITAL',240)
INTO Mytable1(period,hospital,wait_days) VALUES ('P01','ARBUTUS HOSPITAL',156)
INTO Mytable1(period,hospital,wait_days) VALUES ('P02','ARBUTUS HOSPITAL',163)
INTO Mytable1(period,hospital,wait_days) VALUES ('P03','ARBUTUS HOSPITAL',144)
INTO Mytable1(period,hospital,wait_days) VALUES ('P04','ARBUTUS HOSPITAL',158)
INTO Mytable1(period,hospital,wait_days) VALUES ('P05','ARBUTUS HOSPITAL',165)
SELECT 1 FROM DUAL;
Теперь я рассчитываю время ожидания 90-го процентиля, используя аналитическую версию без подзапроса Group By:
SELECT period, hospital,
PERCENTILE_CONT(0.9) WITHIN GROUP (ORDER BY wait_days) OVER (PARTITION BY hospital) as percentile
FROM Mytable1
order by period, hospital;
Вот мои результаты:
PERIOD HOSPITAL PERCENTILE
P01 ARBUTUS HOSPITAL 164.2
P01 NANAIMO HOSPITAL 189.2
P01 VICTORIA HOSPITAL 243.4
P02 ARBUTUS HOSPITAL 164.2
P02 NANAIMO HOSPITAL 189.2
P02 VICTORIA HOSPITAL 243.4
P03 ARBUTUS HOSPITAL 164.2
P03 NANAIMO HOSPITAL 189.2
P03 VICTORIA HOSPITAL 243.4
P04 ARBUTUS HOSPITAL 164.2
P04 NANAIMO HOSPITAL 189.2
P04 VICTORIA HOSPITAL 243.4
P05 ARBUTUS HOSPITAL 164.2
P05 NANAIMO HOSPITAL 189.2
P05 VICTORIA HOSPITAL 243.4
Я получаю один и тот же 90-й процентиль за каждый период. Мне интересно, как я могу получить совокупное значение 90-го процентиля для каждого последующего периода. По сути, мне нужно рассчитать 90-й процентиль на основе суммирования результатов предыдущего периода, ожидающих немного отличающиеся значения для 90-го процентиля (ниже приведен пример того, что я хотел бы получить):
P01 ARBUTUS HOSPITAL 164.2
P02 (=P01+P02) ARBUTUS HOSPITAL 165
P03(=P01+P02+P03) ARBUTUS HOSPITAL 162
P04 (=P01+P02+P03+P04) ARBUTUS HOSPITAL 163
P05(=P01+P02+P03+P04+P05) ARBUTUS HOSPITAL 164
Не могли бы вы помочь? Спасибо!
P.S. Я уже задавал вопрос о вычислениях 90-го процентиля, но это было связано с другой проблемой.