如何从SQLlite中高度细分的人口数据计算平均年龄?

时间:2019-03-27 00:46:57

标签: mysql sql sqlite

我遇到了以下问题:

写一个查询,显示2018年加利福尼亚人的平均年龄。

平均年龄的公式如下所示。

= ∑(+0.5)∗ / ∑

我应该得到以下结果:

average
0   38.487045

从总体中选择*将以以下格式提供基本数据:

fips    county  year    age pop_female pop_male  pop_total
6001    ALAMEDA 1970    0   8533        8671    17204     
6001    ALAMEDA 1970    1   8151        8252    16403     
6001    ALAMEDA 1970    2   7753        8015    15768     
6001    ALAMEDA 1970    3   8018        8412    16430     
6001    ALAMEDA 1970    4   8551        8648    17199       

...等等,从1-100岁到1970-2018年

我尝试使用这个:

select (sum(age + 0.5) * (pop_total) / sum(pop_total)) as 
              average from population group by year having year = 2018

但这给了我以下结果:

average
0.05875349176742352

我在做什么错了?

1 个答案:

答案 0 :(得分:2)

我认为您想在sum()内的第一个乘法 中。大多数数据库都会为此生成错误,但是有些数据库会接受您的语法:

select (sum( (age + 0.5) * pop_total) /
        sum(pop_total)
       ) as average 
from population
where year = 2018