Sortowanie rekordów za pomocą zapytania SQL w Pythonie

Aby posortować wiersze wyniku, trzeba skorzystać z polecenia ORDER BY.

Przykład

Pobierzmy z naszej tabeli users wszystkich użytkowników i posortujmy ich według wieku od najmniejszego do największego:

pythonquery = "SELECT * FROM users ORDER BY age"

Wynik wykonanego kodu:

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}

Przykład

Zmieńmy kolejność sortowania za pomocą polecenia DESC:

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

Wynik wykonanego kodu:

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}

Przykład

Pobierzmy wszystkich użytkowników z wynagrodzeniem 500 i posortujmy ich według wieku od najmniejszego do największego:

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

Wynik wykonanego kodu:

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}

Przykład

Można sortować nie po jednym polu, a po kilku. Dla przykładu pobierzmy wszystkich użytkowników i posortujmy ich najpierw według rosnącego wieku, a użytkowników z tymi samymi wiekiem posortujmy według rosnącego wynagrodzenia:

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

Wynik wykonanego kodu:

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}

Przykład

Polecenie ORDER BY można łączyć z LIMIT. Przy tym najpierw trzeba pisać polecenie sortowania, a potem - limit. W następnym przykładzie najpierw posortujmy rekordy według rosnącego wieku, a potem weźmy pierwsze 3 sztuki:

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

Wynik wykonanego kodu:

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}

Zadania praktyczne

Задание 1

Pobierz wszystkich użytkowników i posortuj ich według rosnącego wynagrodzenia.

Задание 2

Pobierz wszystkich użytkowników i posortuj ich według malejącego wynagrodzenia.

Задание 3

Pobierz wszystkich użytkowników i posortuj ich według imienia.

Задание 4

Pobierz użytkowników z wynagrodzeniem 500 i posortuj ich według wieku.

Задание 5

Pobierz wszystkich użytkowników i posortuj ich według imienia i według wynagrodzenia.

Задание 6

Posortuj użytkowników według rosnącego wynagrodzenia i pobierz pierwszych 3 pracowników z wyniku sortowania.

Задание 7

Posortuj użytkowników według malejącego wynagrodzenia i pobierz pierwszych 3 użytkowników z wyniku sortowania.