ComenzarEmpieza gratis

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

Ver curso

Instrucciones del ejercicio

  • Define una sentencia select llamada stmt para 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'.
  • Agrupa la sentencia por census.columns.state.
  • Ordena la sentencia por cambio de población ('pop_change') en orden descendente. Hazlo pasándole desc('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))
Editar y ejecutar código