开始使用免费开始使用

计算两列之间的差值

在查询中,您经常需要进行数学运算,例如计算 2000 年到 2008 年的人口变化。对于数值型数据的数学运算,SQLAlchemy 中的运算符与 Python 的用法相同。

您可以使用这些运算符进行加法(+)、减法(-)、乘法(*)、除法(/)和取模(%)运算。注意:用于非数值型列时,它们的行为会不同。

现在让我们找出 2000 年到 2008 年间人口增长最多的前 5 个州。

本练习是课程的一部分

Python 中的数据库入门

查看课程

练习说明

  • 定义一个名为 stmt 的 select 语句,返回:
    • i)census 表的州列(census.columns.state)。
    • ii)2008 年(census.columns.pop2008)与 2000 年(census.columns.pop2000)的人口数之差,并标记为 'pop_change'
  • census.columns.state 对语句进行分组。
  • 按人口变化('pop_change')降序排序。通过传入 desc('pop_change') 实现。
  • 在上一条语句上使用 .limit() 方法,仅返回 5 条记录。
  • 执行该语句并使用 fetchall() 获取记录。
  • 打印语句已为您写好。提交答案即可查看结果!

交互式实操练习

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

# Build query to return state names by population difference from 2008 to 2000: stmt
stmt = select([____, (____-____).label(____)])

# Append group by for the state: stmt_grouped
stmt_grouped = stmt.group_by(____)

# Append order by for pop_change descendingly: stmt_ordered
stmt_ordered = stmt_grouped.order_by(____)

# Return only 5 results: stmt_top5
stmt_top5 = ____

# Use connection to execute stmt_top5 and fetch all results
results = connection.execute(____).fetchall()

# Print the state and population change for each record
for result in results:
    print('{}:{}'.format(result.state, result.pop_change))
编辑并运行代码