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
Instruções do exercício
- Defina uma instrução select chamada
stmtpara 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'.
- i) A coluna de estado da tabela
- 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 passandodesc('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))