Вычисление процентов sql
Не судите строго, я только начинаю. Нужна помощь, чтобы посмотреть, на сколько % был выполнен план.
чтобы это вычислить, добавляю эту строку в запрос,
count(t.pcode) / d.doctcode_reg * 100 as result
но походу что-то путаю или же нужно переводить в другой тип. Подскажите, как будет правильно.
Сам запрос этот:
select d.dname "ФИО"
,count(t.pcode) "Кол-во приемов"
,d.doctcode_reg "План"
from treat t
,doctor d
where t.dcode = d.dcode
and d.doctcode_reg is not null
and t.treatdate between
('01.06.2020 00:00')
and ('30.06.2020 23:59')
group by d.dname
,d.doctcode_reg
pcode = bigint
doctcode_reg = varchar
Спасибо заранее!
Ответы (1 шт):
Автор решения: Alexandr
→ Ссылка
Попробовал накидать пример по вашему запросу. Некоторые детали не стал воспроизводить. Процент выполнения вычисляется. Единственное сделал через LEFT JOIN чтобы отображались все доктора.
WITH d AS (
SELECT
6 AS doctcode_reg,
'Петров' AS dname,
1 AS dcode
FROM
dual
UNION ALL
SELECT
10 AS doctcode_reg,
'Иванов' AS dname,
2 AS dcode
FROM
dual
), t AS (
SELECT
1 AS pcode,
1 AS dcode,
SYSDATE AS treatdate
FROM
dual
UNION ALL
SELECT
2 AS pcode,
1 AS dcode,
SYSDATE AS treatdate
FROM
dual
UNION ALL
SELECT
3 AS pcode,
1 AS dcode,
SYSDATE AS treatdate
FROM
dual
)
SELECT
d.dname AS "ФИО",
COUNT(t.pcode) AS "Кол-во приемов",
round(COUNT(t.pcode) / d.doctcode_reg * 100, 2) AS "% выполнения",
d.doctcode_reg AS "План"
FROM
d left
JOIN t ON t.dcode = d.dcode
GROUP BY
d.dname,
d.doctcode_reg
Результат:
Иванов 0 0 10
Петров 3 50 6