通过语句计算从每个组获得的平均值的平均值

时间:2021-02-11 11:22:32

标签: sql sql-server tsql

我的目标是首先在组级别计算第一个孩子级别的平均值,然后计算父组级别的平均值

我下面有一个数据库表

enter image description here

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 

我从上面的查询中得到以下结果

enter image description here

我的最终和实际目标是从上述查询中获得平均值的平均值,以便获得美国的单个结果,平均值为 1.5 和 3.0,而平均值为 2.25

任何人都可以帮助我得到这个结果,以便我得到 2.25,即平均值的平均值,如下所示

enter image description here

1 个答案:

答案 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() 该类型的平均值。

相关问题