我的目标是首先在组级别计算第一个孩子级别的平均值,然后计算父组级别的平均值
我下面有一个数据库表
SELECT
Country, IndexType
, NULLIF(CAST(AVG(NULLIF(CAST(IndexPoint AS FLOAT), 0)) AS NUMERIC(18,1)), 0) AS IndexPoint_ChildAverage
FROM tbl_CountryIndex
GROUP BY Country,IndexType
我从上面的查询中得到以下结果
我的最终和实际目标是从上述查询中获得平均值的平均值,以便获得美国的单个结果,平均值为 1.5 和 3.0,而平均值为 2.25
任何人都可以帮助我得到这个结果,以便我得到 2.25,即平均值的平均值,如下所示
答案 0 :(得分:1)
一种方法是使用子查询。我认为不需要将所有这些从一种类型转换为另一种类型,因此:
SELECT country, AVG(IndexPoint_ChildAverage)
FROM (SELECT Country, IndexType, AVG(NULLIF(IndexPoint, 0) * 1.0) as IndexPoint_ChildAverage
FROM tbl_CountryIndex
GROUP BY Country, IndexType
) ci
GROUP BY Country;
如果您想在外部查询中使用特定类型,您可以cast()
该类型的平均值。