Tietueiden lajittelu SQL-kyselyllä Pythonissa
Jotta voit lajitella tulosrivit,
sinun on käytettävä komentoa ORDER
BY.
Esimerkki
Valitaan taulustamme users kaikki
käyttäjät ja lajitellaan heidät iän mukaan
pienimmästä suurimpaan:
query = "SELECT * FROM users ORDER BY age"
Suoritetun koodin tulos:
{'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}
Esimerkki
Muutetaan lajittelujärjestystä käyttämällä
komentoa DESC:
query = "SELECT * FROM users ORDER BY age DESC"
Suoritetun koodin tulos:
{'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}
Esimerkki
Valitaan kaikki käyttäjät, joiden palkka on 500
ja lajitellaan heidät iän mukaan pienimmästä
suurimpaan:
query = "SELECT * FROM users WHERE salary=500 ORDER BY age"
Suoritetun koodin tulos:
{'id': 3, 'name': 'user3', 'age': 23, 'salary': 500}
{'id': 2, 'name': 'user2', 'age': 25, 'salary': 500}
{'id': 5, 'name': 'user5', 'age': 27, 'salary': 500}
Esimerkki
Voit lajitella usean kentän, ei vain yhden kentän mukaan. Esimerkiksi valitaan kaikki käyttäjät ja lajitellaan heidät ensin iän mukaan nousevaan järjestykseen, ja käyttäjät, joilla on sama ikä, lajitellaan palkan mukaan nousevaan järjestykseen:
query = "SELECT * FROM users ORDER BY age, salary"
Suoritetun koodin tulos:
{'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}
Esimerkki
Komentoa ORDER BY voidaan yhdistää
komentoon LIMIT . Tällöin lajittelukomennon on oltava
ensin, ja sitten - rajoitus.
Seuraavassa esimerkissä lajitellaan ensin
tietueet iän mukaan nousevaan järjestykseen, ja sitten
otetaan ensimmäiset 3 kappaletta:
query = "SELECT * FROM users ORDER BY age LIMIT 3"
Suoritetun koodin tulos:
{'id': 1, 'name': 'user1', 'age': 23, 'salary': 400}
{'id': 3, 'name': 'user3', 'age': 23, 'salary': 500}
{'id': 2, 'name': 'user2', 'age': 25, 'salary': 500}
Käytännön tehtävät
Nouda kaikki käyttäjät ja lajittele heidät palkan mukaan nousevaan järjestykseen.
Nouda kaikki käyttäjät ja lajittele heidät palkan mukaan laskevaan järjestykseen.
Nouda kaikki käyttäjät ja lajittele heidät nimen mukaan.
Nouda käyttäjät, joiden palkka on 500 ja
lajittele heidät iän mukaan.
Nouda kaikki käyttäjät ja lajittele heidät nimen ja palkan mukaan.
Lajittele käyttäjät palkan mukaan nousevaan järjestykseen
ja ota ensimmäiset 3 työntekijää
lajittelun tuloksesta.
Lajittele käyttäjät palkan mukaan laskevaan järjestykseen
ja ota ensimmäiset 3 käyttäjää
lajittelun tuloksesta.