Įrašų rūšiavimas naudojant SQL užklausą Python
Norėdami rūšiuoti rezultato eilutes,
turite naudoti komandą ORDER
BY.
Pavyzdys
Pasirinkime iš mūsų lentelės users visus
vartotojus ir surūšiuokime juos pagal amžių nuo
mažiausio iki didžiausio:
query = "SELECT * FROM users ORDER BY age"
Vykdyto kodo rezultatas:
{'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}
Pavyzdys
Pakeiskime rūšiavimo tvarką naudodami
komandą DESC:
query = "SELECT * FROM users ORDER BY age DESC"
Vykdyto kodo rezultatas:
{'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}
Pavyzdys
Pasirinkime visus vartotojus, kurių atlyginimas 500,
ir surūšiuokime juos pagal amžių nuo mažiausio
iki didžiausio:
query = "SELECT * FROM users WHERE salary=500 ORDER BY age"
Vykdyto kodo rezultatas:
{'id': 3, 'name': 'user3', 'age': 23, 'salary': 500}
{'id': 2, 'name': 'user2', 'age': 25, 'salary': 500}
{'id': 5, 'name': 'user5', 'age': 27, 'salary': 500}
Pavyzdys
Galima rūšiuoti ne pagal vieną lauką, o pagal kelis. Pavyzdžiui, pasirinkime visus vartotojus ir surūšiuokime juos pirma pagal amžių didėjimo tvarka, o vartotojus, kurių amžius vienodas, surūšiuokime pagal atlyginimą didėjimo tvarka:
query = "SELECT * FROM users ORDER BY age, salary"
Vykdyto kodo rezultatas:
{'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}
Pavyzdys
Komandą ORDER BY galima derinti
su LIMIT . Tokiu atveju pirma reikia
rašyti rūšiavimo komandą, o po to - limitą.
Šiame pavyzdyje pirma surūšiuosime
įrašus pagal amžių didėjimo tvarka, o po to
paimsime pirmuosius 3 įrašus:
query = "SELECT * FROM users ORDER BY age LIMIT 3"
Vykdyto kodo rezultatas:
{'id': 1, 'name': 'user1', 'age': 23, 'salary': 400}
{'id': 3, 'name': 'user3', 'age': 23, 'salary': 500}
{'id': 2, 'name': 'user2', 'age': 25, 'salary': 500}
Praktinės užduotys
Paimkite visus vartotojus ir surūšiuokite juos pagal atlyginimą didėjimo tvarka.
Paimkite visus vartotojus ir surūšiuokite juos pagal atlyginimą mažėjimo tvarka.
Paimkite visus vartotojus ir surūšiuokite juos pagal vardą.
Paimkite vartotojus, kurių atlyginimas 500, ir
surūšiuokite juos pagal amžių.
Paimkite visus vartotojus ir surūšiuokite juos pagal vardą ir pagal atlyginimą.
Surūšiuokite vartotojus pagal atlyginimą didėjimo tvarka
ir gaukite pirmus 3 darbuotojus iš
rūšiavimo rezultato.
Surūšiuokite vartotojus pagal atlyginimą mažėjimo tvarka
ir gaukite pirmus 3 vartotojus iš
rūšiavimo rezultato.