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:
query = "SELECT * FROM users ORDER BY age"
Wynik wykonanego kodu:
{'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:
query = "SELECT * FROM users ORDER BY age DESC"
Wynik wykonanego kodu:
{'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:
query = "SELECT * FROM users WHERE salary=500 ORDER BY age"
Wynik wykonanego kodu:
{'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:
query = "SELECT * FROM users ORDER BY age, salary"
Wynik wykonanego kodu:
{'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:
query = "SELECT * FROM users ORDER BY age LIMIT 3"
Wynik wykonanego kodu:
{'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
Pobierz wszystkich użytkowników i posortuj ich według rosnącego wynagrodzenia.
Pobierz wszystkich użytkowników i posortuj ich według malejącego wynagrodzenia.
Pobierz wszystkich użytkowników i posortuj ich według imienia.
Pobierz użytkowników z wynagrodzeniem 500 i
posortuj ich według wieku.
Pobierz wszystkich użytkowników i posortuj ich według imienia i według wynagrodzenia.
Posortuj użytkowników według rosnącego wynagrodzenia
i pobierz pierwszych 3 pracowników z
wyniku sortowania.
Posortuj użytkowników według malejącego wynagrodzenia
i pobierz pierwszych 3 użytkowników z
wyniku sortowania.