Создайте представление MySQL, чтобы получить среднее для столбца счета - PullRequest
1 голос
/ 25 марта 2020

Мне нужно создать представление, чтобы получить сумму столбца подсчета и отобразить среднее значение в виде нового столбца. Я использовал следующий код.

select
    count(`t`.`surg_priority`) AS `Surgery_Count`,
    `t`.`surg_priority` AS `Surgery_Type`
from
    `DataBase`.`booking` t
group by
    `t`.`surg_priority

enter image description here

Это был результат. Мне нужен новый столбец под названием «Среднее», чтобы получить общее количество операций. Ср.

Surgery Average = (Surgery Count / Sum of Surgery Count) * 100

Я также пытался

select
count(`t`.`surg_priority`) AS `Surgery_Count`,
`t`.`surg_priority` AS `Surgery_Type`,
(
    (count(`t`.`surg_priority`)/(sum(Surgery_Count))
    )* 100 AS `Surgery_AVG`  
from
    `DataBase`.`orbkn_booking` t
group by
    `t`.`surg_priority`

Это тоже не сработало. Убедитесь, что это вид. Не могу использовать переменные или накопительные функции

Ответы [ 2 ]

2 голосов
/ 25 марта 2020

Вы можете вычислить общее количество в подзапросе и разделить Surgery_Count на:

select
    count(`t`.`surg_priority`) AS `Surgery_Count`,
    `t`.`surg_priority` AS `Surgery_Type`,
    100.0 * count(`t`.`surg_priority`) /
        (select count(`surg_priority`) from `DataBase`.`booking`) AS `Surgery_Avg`
from
    `DataBase`.`booking` t
group by
    `t`.`surg_priority
0 голосов
/ 25 марта 2020

Используйте функции окна:

select b.surg_priority as Surgery_Type, count(*) as surgery_count,
       count(*) * 100.0 / sum(count(*)) over () as ratio
from DataBase.booking b
group by b.surg_priority;

Они были доступны с момента выпуска MySQL 8+.

Кроме того, не загромождайте запросы обратными пометками. Они просто затрудняют написание и чтение запросов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...