首页 > 解决方案 > 在 Oracle SQL 中使用子查询计算 AVG()

问题描述

Select x.*, Avg(Columnz)as avg_columnz from
(
Select a,b,c,d,e,f,columnx-columny as columnz from table abc)x

group by a,b,c,d,e,f;

我得到的 avg_columnz 与 columnz 相同

这是火腿的获取方式,而不是 columnz 的实际平均值。我在这里做错了什么?

一个 b C d e F 列x 柱状 列兹 avg_columnz
1 2 3 4 5 6 8 2 6 6
1 2 3 4 5 6 6 3 3 3
1 2 3 4 5 6 4 2 2 2
1 2 3 4 5 6 6 1 5 5
1 2 3 4 5 6 2 1 1 1

标签: sqloracleoracle-sqldeveloper

解决方案


我的感觉是,您真的想在AVG()这里用作分析函数:

SELECT a, b, c, d, e, f, columnx - columny AS columnz,
       AVG(columnx - columny) OVER (PARTITION BY a, b, c, d, e, f) avg_columnz
FROM yourTable
ORDER BY a, b, c, d, e, f;

推荐阅读