Calcular la diferencia entre dos columnas
A menudo necesitarás realizar operaciones matemáticas como parte de una consulta, por ejemplo, si quieres calcular el cambio de población de 2000 a 2008. Para operaciones con números, los operadores en SQLAlchemy funcionan igual que en Python.
Puedes usar estos operadores para realizar operaciones de suma (+), resta (-), multiplicación (*), división (/) y módulo (%). Nota: se comportan de manera diferente cuando se usan con tipos de columnas no numéricos.
Ahora vamos a encontrar los 5 estados con mayor crecimiento de población entre 2000 y 2008.
Este ejercicio forma parte del curso
Introducción a las bases de datos en Python
Instrucciones del ejercicio
- Define una sentencia select llamada
stmtpara devolver:- i) La columna de estado de la tabla
census(census.columns.state). - ii) La diferencia en el recuento de población entre 2008 (
census.columns.pop2008) y 2000 (census.columns.pop2000) etiquetada como'pop_change'.
- i) La columna de estado de la tabla
- Agrupa la sentencia por
census.columns.state. - Ordena la sentencia por cambio de población (
'pop_change') en orden descendente. Hazlo pasándoledesc('pop_change'). - Usa el método
.limit()sobre la sentencia anterior para devolver solo 5 registros. - Ejecuta la sentencia y
fetchall()los registros. - La sentencia de impresión ya está escrita por ti. ¡Enviar la respuesta para ver los resultados!
Ejercicio interactivo práctico
Prueba este ejercicio y completa el código de muestra.
# 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))