Řazení záznamů pomocí SQL dotazu v Pythonu
Chcete-li seřadit řádky výsledku,
je třeba použít příkaz ORDER
BY.
Příklad
Vyberme z naší tabulky users všechny
uživatele a seřaďme je podle věku od
nejmenšího k největšímu:
query = "SELECT * FROM users ORDER BY age"
Výsledek provedeného kódu:
{'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}
Příklad
Změníme pořadí řazení pomocí
příkazu DESC:
query = "SELECT * FROM users ORDER BY age DESC"
Výsledek provedeného kódu:
{'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}
Příklad
Vyberme všechny uživatele se mzdou 500
a seřaďme je podle věku od nejmenšího
k největšímu:
query = "SELECT * FROM users WHERE salary=500 ORDER BY age"
Výsledek provedeného kódu:
{'id': 3, 'name': 'user3', 'age': 23, 'salary': 500}
{'id': 2, 'name': 'user2', 'age': 25, 'salary': 500}
{'id': 5, 'name': 'user5', 'age': 27, 'salary': 500}
Příklad
Můžete řadit ne podle jednoho pole, ale podle několika. Pojďme pro příklad vybrat všechny uživatele a seřadit je nejprve podle vzestupného věku, a uživatele se stejnými věky seřadit podle vzestupné mzdy:
query = "SELECT * FROM users ORDER BY age, salary"
Výsledek provedeného kódu:
{'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}
Příklad
Příkaz ORDER BY lze kombinovat
s LIMIT . Přitom je třeba nejprve
psát příkaz řazení, a poté - limit.
V následujícím příkladu nejprve seřadíme
záznamy podle vzestupného věku, a poté
vezmeme první 3 kusy:
query = "SELECT * FROM users ORDER BY age LIMIT 3"
Výsledek provedeného kódu:
{'id': 1, 'name': 'user1', 'age': 23, 'salary': 400}
{'id': 3, 'name': 'user3', 'age': 23, 'salary': 500}
{'id': 2, 'name': 'user2', 'age': 25, 'salary': 500}
Praktické úlohy
Získejte všechny uživatele a seřaďte je podle vzestupné mzdy.
Získejte všechny uživatele a seřaďte je podle sestupné mzdy.
Získejte všechny uživatele a seřaďte je podle jména.
Získejte uživatele se mzdou 500 a
seřaďte je podle věku.
Získejte všechny uživatele a seřaďte je podle jména a podle mzdy.
Seřaďte uživatele podle vzestupné mzdy
a získejte první 3 pracovníky z
výsledku řazení.
Seřaďte uživatele podle sestupné mzdy
a získejte první 3 uživatele z
výsledku řazení.