我需要创建一个视图来获取count列的总和,并将平均值显示为新列。我使用了下面的代码。
select
count(`t`.`surg_priority`) AS `Surgery_Count`,
`t`.`surg_priority` AS `Surgery_Type`
from
`DataBase`.`booking` t
group by
`t`.`surg_priority
这就是结果。我需要一个名为average的新列来获得手术平均总数。
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`
这也不起作用。确保这是一个视图。不能使用变量或累积函数
发布于 2020-03-25 07:10:38
您可以计算子查询中的总计数,并将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
发布于 2020-03-25 11:49:09
使用窗口函数:
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+发布以来,这些都是可用的。
另外,不要用反引号打乱你的查询。它们只会使查询更难编写和阅读。
https://stackoverflow.com/questions/60844200
复制相似问题