Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 分组求和平均值_Mysql_Sql - Fatal编程技术网

Mysql 分组求和平均值

Mysql 分组求和平均值,mysql,sql,Mysql,Sql,我有以下表格结构: 来源年份CountryNumObservedAverage -------- abc 2016美国30 15 abc 2017美国10 20 pqr 2016美国5040 pqr 2017 ru 12 26 每个来源中可以有多个来源和多个国家。 我希望输出的形式为: 年份国家平均值 - -- 2016年30.625美元 2017年美国20 2017 ru 26 其中,avg计算为任何给定年份和国家/地区对的∑numObserved*平均值/∑numObserved 按年份

我有以下表格结构:

来源年份CountryNumObservedAverage -------- abc 2016美国30 15 abc 2017美国10 20 pqr 2016美国5040 pqr 2017 ru 12 26

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

年份国家平均值 - -- 2016年30.625美元 2017年美国20 2017 ru 26

其中,avg计算为任何给定年份和国家/地区对的∑numObserved*平均值/∑numObserved


按年份分组的平均值,国家不起作用,因为它的平均值为15,40,即2016年为27.5,国家=美国

您只需要滚动您自己的加权平均值,而不是依赖内置的平均值函数:

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

到目前为止,你试过什么?@maSTAShuFu我试过按年份、国家分组,然后平均应用聚合函数avg,但它取平均值的平均值,即avg1+avg2+。。。avgn/n,这不是我想要的。看到了吗