gpt4 book ai didi

mysql - 一个MySQL查询可以通过不同的分组获取AVG?

转载 作者:行者123 更新时间:2023-11-29 13:44:04 26 4
gpt4 key购买 nike

想知道是否有一种方法可以在一个 MySQL 查询中编写以下内容。

我有一张 table :cust_ID | 客户ID rpt_名称 | req_secs

在查询中我想得到:

按 cust_ID 分组时的 AVG req_secs

按 rpt_name 分组时的 AVG req_secs

总 req_secs AVG

我知道我可以对同一个表进行单独的分组查询,然后将结果合并为一个。但我希望有某种方法可以在一次查询中完成此操作。

谢谢。

最佳答案

好吧,以下内容将完成三分之二:

select n,
(case when n = 1 then cast(cust_id as varchar(255)) else rpt_name end) as grouping,
avg(req_secs)
from t cross join
(select 1 as n union all select 2
) n
group by n, (case when n = 1 then cust_id else rpt_name end);

这实际上是将数据“加倍”,然后对每个组进行聚合。这假设 cust_idrpt_name 是兼容类型。 (如果不是这种情况,可以调整查询。)

实际上,您可以使用rollup获得总体平均值:

select n,
(case when n = 1 then cust_id else rpt_name end) as grouping,
avg(req_secs)
from t cross join
(select 1 as n union all select 2
) n
group by n, (case when n = 1 then cast(cust_id as varchar(255)) else rpt_name end) with rollup

这适用于平均值,因为“加倍”数据的平均值与原始数据的平均值相同。它不适用于 sum()count()

关于mysql - 一个MySQL查询可以通过不同的分组获取AVG?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17683746/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com