按平均值分组

时间:2018-05-21 23:01:58

标签: mysql sql

我有以下表结构:

  

来源年份国家/地区编号平均值   --- --- --- --- ---
    abc 2016 us 30 15
    abc 2017 us 10 20   
pqr 2016 us 50 40
  pqr 2017 ru 12    26
...

每个source中可以有多个来源和多个国家/地区。 我希望输出形式为:

  

year country avg
  --- --- ---
  2016年我们30.625
  2017我们20
  2017 ru 26

其中avg被计算为Σ(numObserved * average)/Σ(numObserved),用于任何给定的yearcountry

avg(average)上的group by year, country不起作用,因为year = 2016country = us的平均值为15,40(即27.5)。

1 个答案:

答案 0 :(得分:1)

你只需要自己推动自己的"加权平均而不是依赖内置的avg函数:

SELECT
    country,
    year,
    SUM(numObserved * average) / SUM(numObserved) AS weighted_average
FROM my_table
GROUP BY country, year
相关问题