Uredi po sintaksi. Razvrščanje podatkov v SQL (ORDER BY). Razvrsti izbrane podatke

Opomba:
Vsi članki v trenutni kategoriji vadnic SQL uporabljajo primere in težave, ki temeljijo na zbirki podatkov za usposabljanje.

V skladu s prvo normalno obliko relacijskih baz podatkov vrstni red vrstic v tabelah ne bi smel biti pomemben. Toda v praksi je pogosto treba razvrstiti informacije, preden jih prikažete na zaslonu.

Klavzula ORDER BY je odgovorna za vrstni red vrstic, naloženih v poizvedbi SQL. Nahaja se na samem koncu zahteve:

IZBERI<Перечень столбцов>OD<Перечень таблиц>NAROČI PO<Условие сортировки>

Pogoj razvrščanja določa stolpce, po katerih bodo razvrščene dobljene vrstice tabele:

VRSTI PO col1, col2

Vrstni red v SQL

Na voljo sta 2 možnosti razvrščanja: naraščajoče in padajoče. Če želite navesti vrsto razvrščanja v poizvedbi, za imenom stolpca označite ključna beseda ASC (naraščajoče) ali DESC (padajoče), ki določata naraščajoči oziroma padajoči vrstni red. Privzeti tip je ASC:

ORDER BY col1 -- naslednji stavek bo enakovreden ORDER BY col1 ACS

Za različne stolpce je mogoče določiti tudi drugačen vrstni red:

VRSTNI RED PO col1 DESC, col2 ASC

Za utrjevanje gradiva rešite nalogo na izobraževalni bazi:

Pridobiti morate seznam ID-jev zaposlenih, razvrščenih po skupinah v naraščajočem vrstnem redu in datumu zaposlitve, od najnovejšega do najstarejšega.

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

Dopolnimo sintakso stavka SELECT s klavzulo ORDER BY (navpična vrstica pomeni, da mora biti izbrana ena od možnosti):

IZBERITE [TableName.]ColumnName[, [TableName.]ColumnName2 ...] IZ [[DatabaseName.]SchemaName.]TableName ColumnName [, [TableName.]ColumnName2 ...]]

  • Naprej >

Če so vam materiali iz office-menu.ru pomagali, podprite projekt, da ga bom lahko še naprej razvijal.

Klavzula ORDER BY v Accessu razvrsti zapise, vrnjene s poizvedbo, v naraščajočem ali padajočem vrstnem redu vrednosti navedenih polj.

Sintaksa

IZBERI seznam_polj
OD tabela
KJE izbirni_pogoj
[, polje2 ][, ...]]]

Izjava SELECT ki vsebuje klavzulo ORDER BY, vključuje naslednje elemente:

Opombe

Klavzula ORDER BY ni obvezna. Uporabite ga, ko morate podatke prikazati v razvrščeni obliki.

Privzeti vrstni red je naraščajoč (od A do Ž, od 0 do 9). Spodnja dva primera prikazujeta razvrščanje imen zaposlenih po priimkih.

IZBERI Priimek, Ime
OD zaposlenih
UREDI PO PRIIMKU;
IZBERI Priimek, Ime
OD zaposlenih
ORDER BY Priimek ASC;

Za razvrščanje v padajočem vrstnem redu (Z do A, 9 do 0) dodajte rezervirano besedo DESC na koncu vsakega polja, po katerem želite razvrstiti zapise. Spodnji primer razvršča imena zaposlenih v padajočem vrstnem redu glede na plačo.

IZBERI Priimek, Plača
OD zaposlenih
ORDER BY Plača DESC, Priimek;

Če podate polje, ki vsebuje podatke Memo ali objekte OLE v členu ORDER BY, bo prišlo do napake. jedro DBMS Microsoft Access ne podpira razvrščanja po poljih teh vrst.

Klavzula ORDER BY je običajno zadnji element v stavku SQL.

Dodatna polja lahko vključite v klavzulo ORDER BY. Zapisi so najprej razvrščeni po polju, ki je prvo podano v klavzuli ORDER BY. Zapisi z enakimi vrednostmi prvega polja so nato razvrščeni po podanem drugem polju in tako naprej.

Pri pridobivanju podatkov je lahko pomembno, da jih pridobimo v določeni urejeni obliki. Razvrščanje je možno po poljubnih poljih s poljubno vrsto podatkov. To je lahko naraščajoče ali padajoče razvrščanje za številska polja. Pri znakovnih (besedilnih) poljih je to lahko razvrščanje po abecednem vrstnem redu, čeprav gre v bistvu tudi za razvrščanje v naraščajočem ali padajočem vrstnem redu. Lahko se izvaja tudi v kateri koli smeri - od A do Ž in obratno od Ž do A.

Bistvo postopka sortiranja je reduciranje zaporedja na določen vrstni red. Več o razvrščanju lahko izveste v članku “Algoritmi za razvrščanje.” Na primer razvrščanje poljubnega številskega zaporedja v naraščajočem vrstnem redu:

2, 4, 1, 5, 9

rezultat bi moral biti urejeno zaporedje:

1, 2, 4, 5, 6

Podobno pri razvrščanju v naraščajočem vrstnem redu vrednosti nizov:

Ivanov Ivan, Petrov Petr, Ivanov Andrej

rezultat bi moral biti:

Ivanov Andrej, Ivanov Ivan, Petrov Petrov

Tu se je vrstica »Andrey Ivanov« premaknila na začetek, saj se primerjava nizov izvaja znak za znakom. Obe vrstici se začneta z istimi znaki "Ivanov". Ker je simbol "A" v besedi "Andrey" prej v abecedi kot simbol "I" v besedi "Ivan", bo ta vrstica postavljena prej.

Razvrščanje v poizvedbi SQL

Če želite izvesti razvrščanje, morate nizu poizvedbe dodati ukaz ORDER BY. Za tem ukazom je označeno polje, po katerem se izvaja sortiranje.

Na primer, uporabljamo blago tabele blaga:

št
(Številka artikla)
naslov
(ime)
cena
(cena)
1 Mandarin50
2 Lubenica120
3 Ananas80
4 Banana40

Podatki tukaj so že razvrščeni po stolpcu "num". Zdaj pa sestavimo poizvedbo, ki bo prikazala tabelo z izdelki, razvrščenimi po abecednem vrstnem redu:

IZBERI * IZ BLAGA VRSTI PO NAZIVU

IZBERI * IZ blaga – določa izbiro vseh polj iz tabele blaga;

ORDER BY – ukaz za razvrščanje;

naslov – stolpec, po katerem bo izvedeno razvrščanje.

Rezultat izvršitve takšne zahteve je naslednji:

št naslov cena
3 Ananas80
2 Lubenica120
4 Banana40
1 Mandarin50

Razvrstite lahko tudi za katero koli polje tabele.

Smer razvrščanja

Privzeto ukaz ORDER BY razvršča v naraščajočem vrstnem redu. Za ročno upravljanje smeri razvrščanja uporabite ključno besedo ASC (naraščajoče) ali DESC (padajoče) za imenom stolpca. Če želite prikazati našo tabelo v padajočem vrstnem redu cen, morate vprašati takole:

IZBERI * IZ BLAGA RAZVRSTI PO CENI DESC

Razvrsti po naraščajoči ceni bo:

IZBERI * IZ BLAGA VRSTI PO ceni VZP

Razvrščanje po več poljih

SQL omogoča razvrščanje po več poljih hkrati. V ta namen so za ukazom ORDER BY označena obvezna polja, ločena z vejicami. Vrstni red rezultatov poizvedbe bo konfiguriran v istem vrstnem redu, kot so podana polja za razvrščanje.

stolpec1 stolpec2 stolpec3
3 1 c
1 3 c
2 2 b
2 1 b
1 2 a
1 3 a
3 4 a

Razvrstimo tabelo po naslednjih pravilih:

IZBERI * IZ mytable ORDER BY stolpec1 ASC, stolpec2 DESC, stolpec3 ASC

Tisti. prvi stolpec se dviga, drugi se spušča, tretji spet narašča. Poizvedba bo vrstice razporedila po prvem stolpcu, nato pa po drugem stolpcu, ne da bi kršili prvo pravilo. Potem tudi, ne da bi kršili obstoječa pravila, po tretjem. Rezultat bo nabor podatkov, kot je ta:

stolpec1 stolpec2 stolpec3
1 3 a
1 3 c
1 2 a
2 2 b
2 1 b
3 1 a
3 1 c

Vrstni red ukaza ORDER BY v poizvedbi

Razvrščanje vrstic se največkrat izvaja skupaj s pogojem za izbor podatkov. Ukaz ORDER BY je postavljen za izbirnim pogojem WHERE. Na primer, izberemo izdelke s ceno, manjšo od 100 rubljev, razvrščene po imenu po abecednem vrstnem redu:

IZBERI * OD blaga KJE cena 100 VRSTNI RED PO ceni ASC

Pogosto je treba prikazati rezultat poizvedbe v določenem vrstnem redu, na primer po abecedi. V ta namen ima DBMS posebno funkcijo v jeziku SQL - sortiranje. V tem primeru lahko programer izbere, katera polja in v kakšnem vrstnem redu se bodo pojavila, da bi dosegel želeni rezultat, ne da bi pri tem uporabil resne veščine programiranja.

Kaj je razvrščanje v bazi podatkov?

Delo z bazami podatkov je nenehno povezano z veliko količino informacij, ki jih je treba organizirati. Trenutno obstaja več DBMS-jev s širokim naborom funkcij, med katerimi sta najbolj priljubljena Oracle in MS SQL. Razvrščanje informacij kot enega glavnih postopkov pri delu z zbirkami podatkov zagotavlja posebna vgrajena funkcija v vsaki od njih.

Podatki o rangiranju vam omogočajo poenostavitev postopka iskanja in v nekaterih primerih pomagajo rešiti določene težave ali optimizirati delovanje programa. Razvrščanje SQL izvede ločeno izbrano polje in če je potrebno, če so v elementih tega polja enake vrednosti, lahko določite dodatne parametre, ki določajo lokacijo vrstic.

Ukaz za razvrščanje

Razvrščanje SQL v podatkovni zbirki je zagotovljeno s funkcijo ORDER BY. Torej, pri izpisu informacij iz baze podatkov, po določitvi stolpcev in tabel, iz katerih bo opravljeno branje, mora poizvedba podati ukaz za razvrščanje in nato določiti polje ali polja, po katerih bo izvedeno razvrščanje.

Na primer, če morate pridobiti podatke iz polj Ime in Starost iz tabele Ljudje, medtem ko rezultat prikažete po abecednem vrstnem redu po stolpcu Ime, vam bo pomagala naslednja poizvedba: IZBERI Ime, Starost IZ Oseb, RAZVRSTI PO IMENU.

Kako nastaviti vrstni red?

Sodobne razmere programerjem postavljajo različne naloge in včasih je treba vnaprej določiti, v kakšnem vrstnem redu bo rezultat prikazan - v padajočem ali naraščajočem vrstnem redu, po abecedi ali v obratnem vrstnem redu? Da bi to naredili v SQL, se vrstni red določi z dodajanjem ključne besede v poizvedbo. Po izbiri polj in tabel, iz katerih bodo pridobljeni želeni podatki, morate dodati ORDER BY, nato pa določiti ime stolpca, po katerem želite sortirati.

Če želite dobiti obratni vrstni red, morate za imenom podati parameter DESC. Če je treba elemente razvrstiti po dveh ali več kriterijih, so stolpci označeni ločeni z vejicami, prednost pri rangiranju pa bo imelo polje, ki je prvo na seznamu. Omeniti velja, da parameter DESC omogoča razporeditev elementov v obratnem vrstnem redu samo v enem polju, po imenu katerega je navedena ta ključna beseda, zato jo je treba po potrebi določiti v vseh izbranih stolpcih.

Alternativne metode razvrščanja

Če ni mogoče uporabiti vgrajene funkcije za razvrščanje SQL, lahko napišete enega od dobro znanih algoritmov. Če želite doseči najhitrejše razporejanje elementov, uporabite metodo, ki temelji na razdelitvi niza elementov na pol. Zelo priljubljene so tudi »bubble« metode razvrščanja, pri katerih dve sosednji elementi zamenjava mest v primeru nepravilne postavitve, "piramidno razvrščanje", ki pošlje največji element na konec seznama, in "razvrščanje vstavljanja", ki vnaprej določi lokacijo vsakega elementa po vrsti.

Če sami napišete algoritem, ne boste bistveno povečali hitrosti razvrščanja, boste pa prispevali k razvoju veščin programiranja, prav tako pa vam bo omogočilo spreminjanje procesa s prilagajanjem sheme rangiranja določeni bazi podatkov za izboljšanje učinkovitosti programa.

V prihodnosti bomo morda morali naš izbor razvrstiti – po abecedi za besedilo ali naraščajoče/padajoče za številske vrednosti. Za takšne namene v SQL Tukaj je posebni operater NAROČI PO .

1. Razvrščanje izbranih podatkov.

Razvrstimo našo celotno tabelo po količini prodaje izdelkov, in sicer po stolpcu Znesek.

IZBERI * OD Sumproduct ORDER BY Znesek

Vidimo, da je poizvedba razvrstila zapise v naraščajočem vrstnem redu v polju Znesek. Nujno je treba upoštevati zaporedje operatorjev, tj. operater NAROČI PO naj bo na samem koncu zahteve. V nasprotnem primeru boste prejeli sporočilo o napaki.

Tudi lastnost operaterja NAROČI PO je, da lahko podatke sortira po polju, ki ga nismo izbrali v poizvedbi, se pravi, da je dovolj, da je sploh v bazi.

2. Razvrščanje po več poljih.

Sedaj pa naš primer dodatno razvrstimo še po enem polju. Naj bo polje Mesto, kjer je prikazano mesto prodaje izdelkov.

IZBERI * OD Sumproduct UREDI PO Količina, Mesto

Vrstni red razvrščanja bo odvisen od vrstnega reda polj v zahtevi. To pomeni, da bodo v našem primeru najprej podatki razvrščeni po stolpcu Znesek, nato pa z Mesto.

3. Smer razvrščanja.

Čeprav je privzeti operater NAROČI PO razvršča v naraščajočem vrstnem redu, lahko določimo tudi razvrščanje vrednosti v padajočem vrstnem redu. Da bi to naredili, na koncu vsakega polja postavimo operator OPIS (kar je okrajšava za besedo PADAJOČE).

IZBERI * OD Sumproduct ORDER BY Amount DESC , City

IN v tem primeru, vrednost v polju Znesek so bili razvrščeni v padajočem vrstnem redu in v polju Mesto- Naraščajoče. Operater OPIS velja samo za en stolpec, zato ga je treba po potrebi zapisati za vsakim poljem, ki sodeluje pri razvrščanju.