Ordenación de registros mediante consulta SQL en Python
Para ordenar las filas del resultado,
es necesario utilizar el comando ORDER
BY.
Ejemplo
Seleccionemos de nuestra tabla users todos
los usuarios y ordenémoslos por edad de
menor a mayor:
query = "SELECT * FROM users ORDER BY age"
Resultado del código ejecutado:
{'id': 1, 'name': 'user1', 'age': 23, 'salary': 400}
{'id': 3, 'name': 'user3', 'age': 23, 'salary': 500}
{'id': 2, 'name': 'user2', 'age': 25, 'salary': 500}
{'id': 5, 'name': 'user5', 'age': 27, 'salary': 500}
{'id': 6, 'name': 'user6', 'age': 28, 'salary': 900}
{'id': 4, 'name': 'user4', 'age': 30, 'salary': 900}
Ejemplo
Cambiemos el orden de clasificación usando
el comando DESC:
query = "SELECT * FROM users ORDER BY age DESC"
Resultado del código ejecutado:
{'id': 4, 'name': 'user4', 'age': 30, 'salary': 900}
{'id': 6, 'name': 'user6', 'age': 28, 'salary': 900}
{'id': 5, 'name': 'user5', 'age': 27, 'salary': 500}
{'id': 2, 'name': 'user2', 'age': 25, 'salary': 500}
{'id': 1, 'name': 'user1', 'age': 23, 'salary': 400}
{'id': 3, 'name': 'user3', 'age': 23, 'salary': 500}
Ejemplo
Seleccionemos todos los usuarios con salario 500
y ordenémoslos por edad de menor a mayor:
query = "SELECT * FROM users WHERE salary=500 ORDER BY age"
Resultado del código ejecutado:
{'id': 3, 'name': 'user3', 'age': 23, 'salary': 500}
{'id': 2, 'name': 'user2', 'age': 25, 'salary': 500}
{'id': 5, 'name': 'user5', 'age': 27, 'salary': 500}
Ejemplo
Se puede ordenar no por un campo, sino por varios. Como ejemplo, seleccionemos todos los usuarios y ordenémoslos primero por edad ascendente, y a los usuarios con la misma edad los ordenaremos por salario ascendente:
query = "SELECT * FROM users ORDER BY age, salary"
Resultado del código ejecutado:
{'id': 1, 'name': 'user1', 'age': 23, 'salary': 400}
{'id': 3, 'name': 'user3', 'age': 23, 'salary': 500}
{'id': 2, 'name': 'user2', 'age': 25, 'salary': 500}
{'id': 5, 'name': 'user5', 'age': 27, 'salary': 500}
{'id': 6, 'name': 'user6', 'age': 28, 'salary': 900}
{'id': 4, 'name': 'user4', 'age': 30, 'salary': 900}
Ejemplo
El comando ORDER BY se puede combinar
con LIMIT. En este caso, primero se debe
escribir el comando de ordenación, y luego - el límite.
En el siguiente ejemplo, primero ordenaremos
los registros por edad ascendente, y luego
tomaremos las primeras 3 unidades:
query = "SELECT * FROM users ORDER BY age LIMIT 3"
Resultado del código ejecutado:
{'id': 1, 'name': 'user1', 'age': 23, 'salary': 400}
{'id': 3, 'name': 'user3', 'age': 23, 'salary': 500}
{'id': 2, 'name': 'user2', 'age': 25, 'salary': 500}
Tareas prácticas
Obtenga todos los usuarios y ordénelos por salario ascendente.
Obtenga todos los usuarios y ordénelos por salario descendente.
Obtenga todos los usuarios y ordénelos por nombre.
Obtenga los usuarios con salario 500 y
ordénelos por edad.
Obtenga todos los usuarios y ordénelos por nombre y por salario.
Ordene los usuarios por salario ascendente
y obtenga los primeros 3 empleados del
resultado de la ordenación.
Ordene los usuarios por salario descendente
y obtenga los primeros 3 usuarios del
resultado de la ordenación.