Я должен получить следующий результат:
Демография: соотношение мужчин и женщин
Напишите запрос, который показывает соотношение мужчин и женщин (pop_male, поделенное на pop_female) в возрасте старше 18 лет по округам в 2018 году. Закажите результаты по большинству женских и большинства мужских округов.
county ratio
0 MADERA 0.909718
1 YOLO 0.932634
2 CONTRA COSTA 0.936229
3 SACRAMENTO 0.943243
4 SHASTA 0.944123
Этот предварительный просмотр ограничен пятью строками.
Выбор * из совокупности показывает базовые данные в этом формате:
fips county year age pop_female pop_male pop_total
0 6001 ALAMEDA 1970 0 8533 8671 17204
1 6001 ALAMEDA 1970 1 8151 8252 16403
2 6001 ALAMEDA 1970 2 7753 8015 15768
3 6001 ALAMEDA 1970 3 8018 8412 16430
4 6001 ALAMEDA 1970 4 8551 8648 17199
..... и так далее в возрасте от 0 до 100 лет за все годы 1970–2018 гг. Состояние CA
Я пытался использовать:
select county, (sum(pop_male) / sum(pop_female)) as ratio
from population group by county, year having age > 18 and year = 2018;
вывод был вместо:
county ratio
ALAMEDA 0
ALPINE 1
AMADOR 1
BUTTE 0
CALAVERAS 0
COLUSA 1
CONTRA COSTA 0
Примечание. Мне известно, что я еще не выполнил какой-либо заказ, поскольку я даже не выводил правильные данные.
SQLRaptor дал мне предложение, и я попытался:
select county, (CAST(sum(pop_male) AS DECIMAL(1,6)) / (CAST(sum(pop_female) AS DECIMAL(1,6)) as ratio
from population group by county, year having age > 18 and year = 2018
это дало мне ответ:
SQLite: ///../Databases/population.sqlite3
(sqlite3.OperationalError) возле "as": синтаксическая ошибка
[SQL: выберите округ, (CAST (сумма (pop_male) как десятичный (1,6)) / (CAST (сумма (pop_female) как десятичный (1,6)) как отношение
от группы населения по округам, год, имеющий возраст> 18 и год = 2018]
Я принял предложение Эстебана П и использовал:
выберите округ, (SUM (CAST (pop_male AS float)) / SUM (CAST (pop_female AS float))) как соотношение
из группы населения по округам, год, имеющий возраст> 18 лет, и год = 2018 год по соотношению
Это сработало.