Redoslijed po sintaksi. Sortiranje podataka u SQL-u (ORDER BY). Sortiraj odabrane podatke

Bilješka:
Svi članci u trenutnoj kategoriji SQL vodiča koriste primjere i probleme zasnovane na bazi podataka za obuku.

Prema prvom normalnom obliku relacionih baza podataka, redosled redova u tabelama ne bi trebao biti bitan. Ali u praksi je često potrebno sortirati informacije prije nego što ih prikažete na ekranu.

Klauzula ORDER BY je odgovorna za redoslijed redova učitanih u SQL upitu. Nalazi se na samom kraju zahtjeva:

SELECT<Перечень столбцов>OD<Перечень таблиц>POREDAK PO<Условие сортировки>

Uvjet sortiranja specificira stupce po kojima će se sortirati rezultirajući redovi tablice:

ORDER BY col1, col2

Redoslijed sortiranja u SQL-u

Postoje 2 opcije sortiranja: uzlazno i ​​opadajuće. Da biste naznačili tip sortiranja u upitu, nakon naziva kolone navedite ključna riječ ASC (uzlazni) ili DESC (opadajući), koji definiraju uzlazni ili silazni redoslijed. Zadana vrsta je ASC:

ORDER BY col1 -- sljedeća klauzula će biti ekvivalentna ORDER BY col1 ACS

Također je moguće odrediti drugačiji redoslijed za različite stupce:

ORDER BY st.1 DESC, st.2 ASC

Za konsolidaciju gradiva riješite problem u obrazovnoj bazi podataka:

Potrebno je da dobijete listu ID-ova zaposlenih, sortiranu po grupama u rastućem redosledu i datumu zapošljavanja, od najnovijeg do najstarijeg.

SELECT ID, Group, Hire_date FROM Employees ORDER BY Group, Hire_date DESC

Dopunimo sintaksu naredbe SELECT klauzulom ORDER BY (okomita traka znači da jedna od opcija mora biti odabrana):

SELECT [TableName.] ColumnName[, [TableName.] ColumnName2 ...] FROM [[DatabaseName.]SchemaName.]NameName ColumnName [, [TableName.]ColumnName2 ...]]

  • Naprijed >

Ako su vam materijali sa office-menu.ru pomogli, podržite projekat kako bih ga mogao dalje razvijati.

Klauzula ORDER BY u Accessu sortira zapise vraćene upitom uzlaznim ili silaznim redoslijedom vrijednosti navedenih polja.

Sintaksa

SELECT field_list
OD sto
GDJE izbor_uvjet
[, polje2 ][, ...]]]

SELECT izraz koji sadrži ORDER BY klauzulu uključuje sljedeće elemente:

Bilješke

Klauzula ORDER BY je opciona. Treba ga koristiti kada trebate prikazati podatke u sortiranom obliku.

Zadani redoslijed sortiranja je rastući (A do Z, 0 do 9). Dva primjera ispod prikazuju sortiranje imena zaposlenika po prezimenu.

ODABERITE Prezime, Ime
OD zaposlenih
ORDER BY Prezime;
ODABERITE Prezime, Ime
OD zaposlenih
ORDER BY Prezime ASC;

Za sortiranje po opadajućem redoslijedu (Z do A, 9 do 0), dodajte rezerviranu riječ DESC na kraju svakog polja po kojem želite sortirati zapise. Primjer ispod sortira imena zaposlenika po opadajućem redoslijedu plaće.

ODABIR Prezime, Plata
OD zaposlenih
ORDER BY Plaća DESC, Prezime;

Ako navedete polje koje sadrži Memo podatke ili OLE objekte u ORDER BY klauzuli, doći će do greške. DBMS kernel Microsoft Access ne podržava sortiranje po poljima ovih tipova.

Klauzula ORDER BY je obično posljednji element u SQL izrazu.

Možete uključiti dodatna polja u klauzulu ORDER BY. Zapisi se prvo sortiraju prema polju koje je prvo navedeno u klauzuli ORDER BY. Zapisi sa istim prvim vrijednostima polja se zatim sortiraju po drugom navedenom polju i tako dalje.

Prilikom preuzimanja podataka može biti važno dobiti ih u određenom uređenom obliku. Sortiranje se može izvršiti po bilo kojim poljima sa bilo kojim tipom podataka. Ovo može biti uzlazno ili silazno sortiranje za numerička polja. Za polja znakova (tekstualnih) ovo bi moglo biti sortiranje abecedni red, iako je u suštini i sortiranje u uzlaznom ili opadajućem redoslijedu. Također se može izvoditi u bilo kojem smjeru - od A do Z, i obrnuto od Z do A.

Suština procesa sortiranja je svođenje niza na određeni red. Više o sortiranju možete saznati u članku “Algoritmi za sortiranje”. Na primjer, sortiranje proizvoljnog niza brojeva u rastućem redoslijedu:

2, 4, 1, 5, 9

trebalo bi rezultirati uređenim nizom:

1, 2, 4, 5, 6

Isto tako, kada sortirate uzlaznim redoslijedom vrijednosti niza:

Ivanov Ivan, Petrov Petr, Ivanov Andrej

rezultat bi trebao biti:

Ivanov Andrej, Ivanov Ivan, Petrov Petrov

Ovdje je red "Andrej Ivanov" pomaknut na početak, budući da se poređenje nizova vrši karakter po znak. Oba reda počinju istim znakovima "Ivanov". S obzirom na to da simbol „A“ u riječi „Andrey“ dolazi ranije u abecedi od simbola „I“ u riječi „Ivan“, ovaj red će biti postavljen ranije.

Sortiranje u SQL upitu

Da biste izvršili sortiranje, morate dodati naredbu ORDER BY u niz upita. Nakon ove naredbe označava se polje po kojem se vrši sortiranje.

Za primjer koristimo sto robe:

br
(Broj stavke)
naslov
(ime)
Cijena
(Cijena)
1 Mandarin50
2 Lubenica120
3 Ananas80
4 Banana40

Podaci su ovdje već poredani po koloni "num". Sada, napravimo upit koji će prikazati tabelu s proizvodima sortiranim po abecednom redu:

SELECT * OD robe NARUDŽI PREMA naslovu

SELECT * FROM goods – određuje odabir svih polja iz tabele robe;

ORDER BY – naredba za sortiranje;

title – kolona po kojoj će se izvršiti sortiranje.

Rezultat izvršenja takvog zahtjeva je sljedeći:

br naslov Cijena
3 Ananas80
2 Lubenica120
4 Banana40
1 Mandarin50

Takođe možete sortirati za bilo koje polje tabele.

Smjer sortiranja

Podrazumevano, naredba ORDER BY sortira se uzlaznim redoslijedom. Da biste ručno kontrolirali smjer sortiranja, koristite ključnu riječ ASC (uzlazno) ili DESC (opadajuće) iza naziva kolone. Dakle, da biste našu tabelu prikazali u opadajućem redoslijedu cijena, trebate postaviti upit ovako:

SELECT * OD robe NARUDŽITI PO CIJENI OPIS

Poredaj po rastućoj cijeni bit će:

SELECT * OD robe NARUDŽITI PO CIJENI ASC

Sortiranje po više polja

SQL dozvoljava sortiranje po više polja odjednom. Da biste to učinili, nakon naredbe ORDER BY, potrebna su polja odvojena zarezima. Redoslijed rezultata upita bit će konfiguriran istim redoslijedom u kojem su navedena polja sortiranja.

stupac1 stupac2 stupac3
3 1 c
1 3 c
2 2 b
2 1 b
1 2 a
1 3 a
3 4 a

Hajde da sortiramo tabelu prema sledećim pravilima:

SELECT * IZ moje tablice ORDER BY stupac 1 ASC, stupac 2 DESC, stupac 3 ASC

One. prva kolona je uzlazna, druga silazna, treća opet uzlazna. Upit će poredati redove po prvoj koloni, a zatim, bez kršenja prvog pravila, po drugoj koloni. Zatim, takođe, bez kršenja postojećih pravila, po trećem. Rezultat će biti ovakav skup podataka:

stupac1 stupac2 stupac3
1 3 a
1 3 c
1 2 a
2 2 b
2 1 b
3 1 a
3 1 c

Redoslijed naredbe ORDER BY u upitu

Sortiranje redova se najčešće vrši zajedno sa uslovom za odabir podataka. Naredba ORDER BY se postavlja nakon uvjeta odabira WHERE. Na primjer, odabiremo proizvode s cijenom manjom od 100 rubalja, sortirane po nazivima abecednim redom:

SELECT *OD robe GDJE cijena 100 NARUČI PO CIJENI ASC

Često postoji potreba da se rezultat upita prikaže određenim redoslijedom, na primjer, po abecedi. U tu svrhu DBMS ima posebnu funkciju u SQL jeziku - sortiranje. U tom slučaju, programer može birati koja polja i kojim redoslijedom će se pojaviti kako bi postigao željeni rezultat, bez upotrebe ozbiljnih programskih vještina.

Šta je sortiranje u bazi podataka?

Rad sa bazama podataka je stalno povezan s velikom količinom informacija koje je potrebno organizirati. Trenutno postoji veliki broj DBMS-ova sa širokim spektrom funkcija, od kojih su najpopularniji Oracle i MS SQL. Sortiranje informacija, kao jedan od glavnih postupaka u radu sa bazama podataka, obezbeđeno je posebnom ugrađenom funkcijom u svakoj od njih.

Podaci o rangiranju vam omogućavaju da pojednostavite proces pretraživanja, au nekim slučajevima pomažu u rješavanju određenih problema ili optimiziranju rada programa. SQL sortiranje vrši se posebno odabranim poljem, a ako je potrebno, ako postoje identične vrijednosti u elementima ovog polja, možete odrediti dodatne parametre koji određuju lokaciju redova.

Naredba sortiranja

SQL sortiranje u bazi podataka je omogućeno korištenjem funkcije ORDER BY. Dakle, prilikom izlaza informacija iz baze podataka, nakon specificiranja kolona i tabela iz kojih će se vršiti čitanje, upit mora specificirati naredbu za sortiranje, a zatim odrediti polje ili polja po kojima će se sortiranje izvršiti.

Na primjer, ako trebate dobiti podatke iz polja Ime i Dob iz tablice Ljudi, dok rezultat prikazujete abecednim redom u koloni Ime, tada će vam pomoći sljedeći upit: ODABERITE Ime, dob OD Ljudi REDITE PO Imenu.

Kako postaviti redoslijed sortiranja?

Savremeni uslovi postavljaju pred programere različite zadatke, a ponekad je potrebno unapred odrediti kojim će redosledom biti prikazan rezultat - u opadajućem ili rastućem redosledu, po abecednom redu ili obrnutim redosledom? A da biste to učinili u SQL-u, redoslijed sortiranja se određuje dodavanjem ključne riječi u upit. Nakon odabira polja i tabela iz kojih će se dobiti željene informacije, morate dodati ORDER BY, a zatim odrediti naziv kolone po kojoj želite sortirati.

Da biste dobili obrnuti redoslijed, morate navesti parametar DESC iza imena. Ako je potrebno poredati elemente prema dva ili više kriterijuma, kolone se označavaju odvojene zarezima, a prioritet u rangiranju imaće polje koje je prvo na listi. Vrijedi napomenuti da parametar DESC omogućava sređivanje elemenata obrnutim redoslijedom samo u jednom polju, iza čijeg imena je navedena ova ključna riječ, pa se po potrebi mora navesti u svim odabranim stupcima.

Alternativne metode sortiranja

Ako nije moguće koristiti ugrađenu SQL funkciju sortiranja, možete napisati jedan od dobro poznatih algoritama. Ako trebate postići najbrži redoslijed elemenata, trebali biste koristiti metodu zasnovanu na dijeljenju niza elemenata na pola. Takođe su veoma popularne metode rangiranja „mehurića“, u kojima su dve susjedni elementi zamijenite mjesta u slučaju pogrešnog postavljanja, "piramidalno sortiranje", koje šalje najveći element na kraj liste, i "umetanje sortiranja", koje unaprijed određuje lokaciju svakog elementa redom.

Samostalno pisanje algoritma neće značajno povećati brzinu sortiranja, ali će doprinijeti razvoju vještina programiranja, a također će vam omogućiti da modificirate proces prilagođavanjem sheme rangiranja određenoj bazi podataka kako biste poboljšali efikasnost programa.

U budućnosti ćemo možda morati da sortiramo naš izbor - po abecednom redu za tekst ili uzlazno/opadajuće za numeričke vrednosti. Za takve svrhe u SQL Tu je specijalni operater POREDAK PO .

1. Sortiranje odabranih podataka.

Razvrstajmo cijelu našu tablicu po količini prodaje proizvoda, odnosno po koloni Iznos.

SELECT * IZ Sumproizvoda NARUDŽI PREMA iznosu

Vidimo da je upit sortirao zapise u rastućem redoslijedu u polju Iznos. Neophodno je pratiti redoslijed operatora, tj. operater POREDAK PO treba ići na samom kraju zahtjeva. U suprotnom ćete dobiti poruku o grešci.

Takođe karakteristika operatera POREDAK PO je da može sortirati podatke po polju koje nismo odabrali u upitu, odnosno dovoljno je da se uopće nalazi u bazi podataka.

2. Sortiranje po nekoliko polja.

Sada sortirajmo naš primjer dodatno po još jednom polju. Neka to bude polje Grad, koji prikazuje mjesto prodaje proizvoda.

SELECT * IZ Sumproduct NARUDŽI PREMA iznosu, gradu

Redoslijed sortiranja ovisit će o redoslijedu polja u zahtjevu. To jest, u našem slučaju, prvo će podaci biti sortirani po kolonama Iznos, a zatim po Grad.

3. Smjer sortiranja.

Iako je zadani operator POREDAK PO sortira u rastućem redoslijedu, također možemo odrediti sortiranje vrijednosti u opadajućem redoslijedu. Da bismo to učinili, na kraj svakog polja stavljamo operator DESC (što je skraćenica za riječ SILAŽNO).

SELECT * IZ Sumproduct ORDER BY COOL DESC , Grad

IN u ovom primjeru, vrijednost u polju Iznos sortirani su u opadajućem redosledu i na terenu Grad- Uzlazno. Operater DESC odnosi se samo na jednu kolonu, pa se po potrebi mora napisati iza svakog polja koje učestvuje u sortiranju.