首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >创建一个MySQL视图以获取Count列的平均值

创建一个MySQL视图以获取Count列的平均值
EN

Stack Overflow用户
提问于 2020-03-25 15:01:32
回答 2查看 32关注 0票数 1

我需要创建一个视图来获取count列的总和,并将平均值显示为新列。我使用了下面的代码。

代码语言:javascript
代码运行次数:0
运行
复制
select
    count(`t`.`surg_priority`) AS `Surgery_Count`,
    `t`.`surg_priority` AS `Surgery_Type`
from
    `DataBase`.`booking` t
group by
    `t`.`surg_priority

这就是结果。我需要一个名为average的新列来获得手术平均总数。

代码语言:javascript
代码运行次数:0
运行
复制
Surgery Average = (Surgery Count / Sum of Surgery Count) * 100

我也试过了

代码语言:javascript
代码运行次数:0
运行
复制
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`

这也不起作用。确保这是一个视图。不能使用变量或累积函数

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-03-25 15:10:38

您可以计算子查询中的总计数,并将Surgery_Count除以:

代码语言:javascript
代码运行次数:0
运行
复制
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
票数 2
EN

Stack Overflow用户

发布于 2020-03-25 19:49:09

使用窗口函数:

代码语言:javascript
代码运行次数:0
运行
复制
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+发布以来,这些都是可用的。

另外,不要用反引号打乱你的查询。它们只会使查询更难编写和阅读。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60844200

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档