ComeçarComece de graça

Calculando a diferença entre duas colunas

Muitas vezes, você vai precisar fazer operações matemáticas como parte de uma consulta, por exemplo, para calcular a mudança na população de 2000 para 2008. Para operações matemáticas com números, os operadores no SQLAlchemy funcionam da mesma forma que no Python.

Você pode usar esses operadores para fazer operações de adição (+), subtração (-), multiplicação (*), divisão (/) e módulo (%). Observação: eles se comportam de forma diferente quando usados com tipos de coluna não numéricos.

Agora, vamos encontrar os 5 estados com maior crescimento populacional entre 2000 e 2008.

Este exercício faz parte do curso

Introdução a Bancos de Dados em Python

Ver curso

Instruções do exercício

  • Defina uma instrução select chamada stmt para retornar:
    • i) A coluna de estado da tabela census (census.columns.state).
    • ii) A diferença na contagem populacional entre 2008 (census.columns.pop2008) e 2000 (census.columns.pop2000), rotulada como 'pop_change'.
  • Agrupe a instrução por census.columns.state.
  • Ordene a instrução pela mudança de população ('pop_change') em ordem decrescente. Faça isso passando desc('pop_change').
  • Use o método .limit() na instrução anterior para retornar apenas 5 registros.
  • Execute a instrução e use fetchall() para obter os registros.
  • O comando de impressão já foi escrito para você. Envie a resposta para ver os resultados!

Exercício interativo prático

Experimente este exercício completando este código de exemplo.

# 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))
Editar e executar o código