Tri des enregistrements via une requête SQL en Python
Pour trier les lignes du résultat,
il faut utiliser la commande ORDER
BY.
Exemple
Sélectionnons de notre table users tous
les utilisateurs et trions-les par âge du
plus petit au plus grand :
query = "SELECT * FROM users ORDER BY age"
Résultat du code exécuté :
{'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}
Exemple
Changeons l'ordre de tri avec la commande
DESC :
query = "SELECT * FROM users ORDER BY age DESC"
Résultat du code exécuté :
{'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}
Exemple
Sélectionnons tous les utilisateurs avec un salaire de 500
et trions-les par âge du plus petit
au plus grand :
query = "SELECT * FROM users WHERE salary=500 ORDER BY age"
Résultat du code exécuté :
{'id': 3, 'name': 'user3', 'age': 23, 'salary': 500}
{'id': 2, 'name': 'user2', 'age': 25, 'salary': 500}
{'id': 5, 'name': 'user5', 'age': 27, 'salary': 500}
Exemple
On peut trier non pas par un champ, mais par plusieurs. Prenons pour exemple la sélection de tous les utilisateurs et trions-les d'abord par âge croissant, puis les utilisateurs du même âge seront triés par salaire croissant :
query = "SELECT * FROM users ORDER BY age, salary"
Résultat du code exécuté :
{'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}
Exemple
La commande ORDER BY peut être combinée
avec LIMIT . Dans ce cas, il faut d'abord
écrire la commande de tri, puis - la limite.
Dans l'exemple suivant, trions d'abord les
enregistrements par âge croissant, puis
prenons les 3 premiers :
query = "SELECT * FROM users ORDER BY age LIMIT 3"
Résultat du code exécuté :
{'id': 1, 'name': 'user1', 'age': 23, 'salary': 400}
{'id': 3, 'name': 'user3', 'age': 23, 'salary': 500}
{'id': 2, 'name': 'user2', 'age': 25, 'salary': 500}
Tâches pratiques
Récupérez tous les utilisateurs et triez-les par salaire croissant.
Récupérez tous les utilisateurs et triez-les par salaire décroissant.
Récupérez tous les utilisateurs et triez-les par nom.
Récupérez les utilisateurs avec un salaire de 500 et
triez-les par âge.
Récupérez tous les utilisateurs et triez-les par nom et par salaire.
Triez les utilisateurs par salaire croissant
et obtenez les 3 premiers employés du
résultat du tri.
Triez les utilisateurs par salaire décroissant
et obtenez les 3 premiers utilisateurs du
résultat du tri.