开始使用免费开始使用

计算女性总体占比

在单个 select 语句中同时组合函数和运算符也是可行的。 当我们需要计算百分比或平均值时,这种组合非常实用;我们还可以使用 case() 表达式,仅对满足特定条件的数据进行运算,而不影响整体查询。 case() 表达式接收一个用于匹配的条件列表以及条件匹配时要返回的列,随后是当所有条件都不匹配时的 else_。我们可以把整个表达式包裹在任意函数或数学运算中。

在进行整数除法时,我们通常希望得到浮点数。虽然有些数据库会自动完成这一点,您也可以使用 cast() 函数将表达式转换为特定类型。

本练习是课程的一部分

Python 中的数据库入门

查看课程

练习说明

  • sqlalchemy 导入 casecastFloat
  • 构建表达式 female_pop2000 来计算 2000 年的女性人口。为此:
    • func.sum() 内使用 case()
    • case() 的第一个参数是一个列表,包含一个二元组:
      • i) 一个布尔表达式,检查 census.columns.sex 是否等于 'F'
      • ii) 列 census.columns.pop2000
    • 第二个参数是 else_ 条件,应设为 0。
  • 计算 2000 年的总人口,并使用 cast() 将其转换为 Float
  • 构建查询以计算 2000 年女性所占百分比。做法是用 female_pop2000 除以 total_pop2000,再乘以 100
  • 执行查询并打印 percent_female

交互式实操练习

通过完成这段示例代码来试试这个练习。

# import case, cast and Float from sqlalchemy
from sqlalchemy import ____, ____, ____

# Build an expression to calculate female population in 2000
female_pop2000 = func.sum(
    ____([
        (____ == ____, ____)
    ], else_=____))

# Cast an expression to calculate total population in 2000 to Float
total_pop2000 = cast(func.sum(____), ____)

# Build a query to calculate the percentage of women in 2000: stmt
stmt = select([____ / ____* 100])

# Execute the query and store the scalar result: percent_female
percent_female = connection.execute(____).scalar()

# Print the percentage
print(____)
编辑并运行代码