SQL DENSE_RANK() funkcija

Sql Dense Rank Funkcija



Langų funkcijos yra labai svarbi SQL funkcija ir atlieka esminį vaidmenį atliekant sudėtingus duomenų skaičiavimus ir operacijas SQL duomenų bazėse. Viena iš SQL lango funkcijų yra tankus_rankas ().

Funkcija DENSE_RANK() leidžia priskirti unikalų reitingą kiekvienai rezultatų rinkinio eilutei, remiantis reikšmėmis dar viename nurodytame stulpelyje. Ji labai panaši į rank() funkciją, tačiau turi nedidelių skirtumų, kaip funkcija tvarko pasikartojančius įrašus.

Šioje pamokoje išnagrinėsime, kaip ši funkcija veikia, kokia yra sintaksė ir kaip galime ją naudoti duomenų bazėje.







Kaip tai veikia

Pradėkime nuo paaiškinimo, kaip ši funkcija veikia. Verta nepamiršti, kad funkcija yra aukšto lygio, todėl negalime paaiškinti jos įgyvendinimo.



Funkcija veikia priskirdama reitingą kiekvienai rezultatų rinkinio eilutei, pradedant nuo 1 rango ir didėjant 1 kiekvienai unikaliai stulpelių vertei.



Eilutės su panašiomis reikšmėmis (dublikatai) nurodytuose stulpeliuose priskiriamos tuo pačiu reitingu, o kitai eilutei su kita reikšme priskiriamas kitas turimas rangas, be jokių tarpų.





Kaip minėjome, funkcija nepalieka jokių spragų ten, kur yra pasikartojančių reikšmių, todėl ji skiriasi nuo rank() funkcijos.

Įprasta funkcija dense_rank() yra reitingavimo operacijų atlikimas. Pavyzdžiui, galime jį naudoti norėdami rasti geriausių N įrašų ir pan.



Funkcijos sintaksė:

Toliau aprašoma funkcijos dense_rank() sintaksė:

DENSE_RANK() OVER (

[SKYRIUS PAGAL skaidinio_išreiškimą, ... ]

ĮSAKYMAS BY rūšiavimo_išreiškimas [ASC | DESC],...

)

Nurodytoje sintaksėje:

  1. Pradedame nuo pačios funkcijos dense_rank().
  2. OVER sąlyga rodo lango funkcijos specifikacijų pradžią. Tai apibrėžia, kaip rezultatų rinkinyje taikomas reitingas.
  3. PARTITION BY partition_expression yra neprivaloma sąlyga, leidžianti padalinti gautą rinkinį į grupes arba skaidinius pagal vieną ar daugiau stulpelių. Reitingas taikomas atskirai kiekvienai skaidiniams, o reitingas nustatomas iš naujo naujoje skaidinyje.
  4. ORDER BY sort_expression nurodo tvarką, kuria norime rūšiuoti gautų skaidinių duomenis.

Duomenų pavyzdžiai

Norėdami parodyti, kaip naudoti funkciją dense_rank(), pradėkime nuo lentelės su duomenų pavyzdžiais. Mūsų atveju naudojame pavyzdinę „užsakymų“ lentelę taip:

1 pavyzdys: Dense_Rank() funkcijos naudojimas

Galime naudoti funkciją dense_rank() norėdami reitinguoti gautus užsakymus pagal kainą. Apsvarstykite toliau pateiktą užklausos pavyzdį:

PASIRINKTI

order_id,

customer_username,

product_purchased,

DENSE_RANK() OVER (

ĮSAKYMAS BY

kaina DISKAS

) kainos_reitingas

NUO

įsakymai o;

Pateiktame pavyzdyje naudojame funkciją dense_rank() norėdami reitinguoti duomenis pagal užsakymų kainą. Praleidžiame sąlygą PARTITION BY, nes negrupuojame duomenų.

Gauta išvestis yra tokia:

2 pavyzdys: PASIDARYMAS BY

Taip pat galime pridėti sąlygą PARTITION BY, kad sugrupuotume duomenis į įvairius segmentus, pavyzdžiui, pagal įsigytą produktą.

Užklausos pavyzdys yra toks:

PASIRINKTI

order_id,

customer_username,

product_purchased,

DENSE_RANK() OVER (

skirstymas pagal produktą_pirktą

ĮSAKYMAS BY

kaina DISKAS

) kainos_reitingas

NUO

įsakymai o;

Tai turėtų sugrupuoti duomenis į įvairias grupes pagal gautas grupes ir taikyti kiekvienos grupės elementų reitingą.

Išvada

Šiame įraše sužinojome, kaip naudoti ir dirbti su lango funkcija dense_rank() SQL, kad vertėms būtų priskirtas reitingas pagal konkrečius stulpelius.