Как рассчитать средний возраст из высоко сегментированных данных о населении в SQLlite? - PullRequest
1 голос
/ 27 марта 2019

Мне поставили задачу:

Напишите запрос, который показывает средний возраст человека в Калифорнии в 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 Ответ

2 голосов
/ 27 марта 2019

Я думаю, вы хотите первое умножение внутри sum(). Большинство баз данных генерируют ошибку для этого, но некоторые принимают ваш синтаксис:

select (sum( (age + 0.5) * pop_total) /
        sum(pop_total)
       ) as average 
from population
where year = 2018
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...