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 :

pythonquery = "SELECT * FROM users ORDER BY age"

Résultat du code exécuté :

python{'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 :

pythonquery = "SELECT * FROM users ORDER BY age DESC"

Résultat du code exécuté :

python{'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 :

pythonquery = "SELECT * FROM users WHERE salary=500 ORDER BY age"

Résultat du code exécuté :

python{'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 :

pythonquery = "SELECT * FROM users ORDER BY age, salary"

Résultat du code exécuté :

python{'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 :

pythonquery = "SELECT * FROM users ORDER BY age LIMIT 3"

Résultat du code exécuté :

python{'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

Задание 1

Récupérez tous les utilisateurs et triez-les par salaire croissant.

Задание 2

Récupérez tous les utilisateurs et triez-les par salaire décroissant.

Задание 3

Récupérez tous les utilisateurs et triez-les par nom.

Задание 4

Récupérez les utilisateurs avec un salaire de 500 et triez-les par âge.

Задание 5

Récupérez tous les utilisateurs et triez-les par nom et par salaire.

Задание 6

Triez les utilisateurs par salaire croissant et obtenez les 3 premiers employés du résultat du tri.

Задание 7

Triez les utilisateurs par salaire décroissant et obtenez les 3 premiers utilisateurs du résultat du tri.