SQL DENSE_RANK() Funktsioon

Sql Dense Rank Funktsioon



Aknafunktsioonid on SQL-is ülioluline funktsioon ja mängivad olulist rolli keerulistes andmearvutustes ja SQL-andmebaaside toimingutes. Üks SQL-akna funktsioonide funktsioonidest on dense_rank().

Funktsioon DENSE_RANK() võimaldab meil määrata tulemuskomplekti igale reale kordumatu järjestuse, mis põhineb veel ühe täpsustatud veeru väärtustel. See on väga sarnane funktsiooniga rank(), kuid sellel on väikesed erinevused selles, kuidas funktsioon dubleerivaid kirjeid käsitleb.

Selles õpetuses uurime selle funktsiooni toimimist, pakutavat süntaksit ja seda, kuidas seda andmebaasis kasutada.







Kuidas see töötab

Alustuseks selgitame, kuidas see funktsioon töötab. Hea on meeles pidada, et funktsioon on kõrgetasemeline ja me ei saa selle aluseks olevat rakendust selgitada.



Funktsioon määrab tulemuste komplekti igale reale järjestuse, alustades 1. järjestusest ja suurendades veergude iga kordumatu väärtuse korral 1 võrra.



Määratud veergude sarnaste väärtustega read (duplikaadid) omistatakse samale järjestusele ja järgmine erineva väärtusega rida määratakse järgmise saadaoleva järjestusega, ilma lünkadeta.





Nagu me mainisime, ei jäta funktsioon dubleeritud väärtuste kohta lünki, mis muudab selle funktsioonist rank() erinevaks.

Funktsiooni dense_rank() tavaline kasutus on järjestamise toimingute sooritamine. Näiteks saame selle abil leida N parimat kirjet jne.



Funktsiooni süntaks:

Järgnevalt kirjeldatakse funktsiooni dense_rank() süntaksit:

DENSE_RANK() OVER (

[PARTITSIOON partitsiooni_avaldise järgi, ... ]

TELLIMINE Sordi_avaldise järgi [ASC | DESC], ...

)

Antud süntaksis:

  1. Alustame funktsioonist dense_rank() endast.
  2. OVER-klausel annab märku akna funktsiooni spetsifikatsioonide algusest. See määrab, kuidas tulemuste komplektis järjestust rakendatakse.
  3. Partition_expression PARTITION BY on valikuline klausel, mis võimaldab meil saadud komplekti jaotada rühmadeks või partitsioonideks ühe või mitme veeru alusel. Pingerida rakendatakse igale sektsioonile eraldi, kusjuures auaste lähtestatakse uues sektsioonis.
  4. Avaldis ORDER BY sorti_avaldis määrab järjekorra, milles soovime saadud partitsioonide andmeid sortida.

Näidisandmed

Funktsiooni dense_rank() kasutamise demonstreerimiseks alustame näidisandmetega tabelist. Meie puhul kasutame tellimuste näidistabelit järgmiselt:

Näide 1: Funktsiooni Dense_Rank() kasutamine

Saame kasutada funktsiooni dense_rank(), et järjestada tulemuseks olevaid tellimusi hinna alusel. Mõelge järgmisele päringu näidisele:

VALI

Tellimuse ID,

kliendi_kasutajanimi,

product_purchased,

DENSE_RANK() OVER (

TELLIMINE KÕRVAL

hind PLAATI

) hinna_asetus

FROM

korraldused o;

Antud näites kasutame andmete järjestamiseks tellimuste hinna alusel funktsiooni dense_rank(). Jätame välja klausli PARTITION BY, kuna me ei rühmita andmeid.

Saadud väljund on järgmine:

Näide 2: PARTITSIOON

Saame lisada ka klausli PARTITION BY, et rühmitada andmed erinevatesse segmentidesse, näiteks ostetud toote põhjal.

Näidispäring on järgmine:

VALI

Tellimuse ID,

kliendi_kasutajanimi,

product_purchased,

DENSE_RANK() OVER (

partitsiooni toote_ostetud järgi

TELLIMINE KÕRVAL

hind PLAATI

) hinna_asetus

FROM

korraldused o;

See peaks rühmitama andmed saadud rühmade alusel erinevatesse rühmadesse ja rakendama iga rühma üksuste jaoks järjestust.

Järeldus

Selles postituses õppisime SQL-i aknafunktsiooni dense_rank() kasutamise ja sellega töötamise põhitõdesid, et määrata väärtustele kindlate veergude põhjal auaste.