gpt4 book ai didi

sql - 如何在SQLite中获取X列与Y列的比率?

转载 作者:行者123 更新时间:2023-12-03 17:51:33 27 4
gpt4 key购买 nike

我应该获得以下结果:
人口特性:男女比例
编写查询以显示2018年各县18岁以上男女比例(pop_male除以pop_female)。从最大女性县到最大男性县对结果进行排序。

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


.....依此类推,从1970年至2018年的所有年龄段为0-100岁。州为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
(as)附近的(sqlite3.OperationalError):语法错误
[SQL:选择县,将(CAST(sum(pop_male)AS DECIMAL(1,6))/(CAST(sum(pop_female)AS DECIMAL(1,6)))作为比率
来自各县的人口组,年龄大于18岁且年份= 2018]


我接受Esteban P的建议并使用:

选择县(SUM(CAST(pop_male AS float))/ SUM(CAST(pop_male Male float))作为比率
来自各县的人口组,年龄大于18岁的年份和年份= 2018(按比例排序)

这工作了。

最佳答案

不想在注释中覆盖SQLRaptor的有用响应,但是为了完整性:)

SQL将整数除法视为整数,因此将其截断。为了避免这种情况-将至少一个值转换为浮点数据类型(例如SQLite的REAL或FLOAT-在此处查看有关数据类型的手册:https://www.sqlite.org/datatype3.html

关于sql - 如何在SQLite中获取X列与Y列的比率?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55367362/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com