SQL DENSE_RANK() funkcija

Sql Dense Rank Funkcija



Logu funkcijas ir būtiska SQL funkcija, un tām ir būtiska loma sarežģītos datu aprēķinos un operācijās SQL datu bāzēs. Viena no funkcijām SQL loga funkcijās ir dense_rank().

Funkcija DENSE_RANK() ļauj mums katrai rezultātu kopas rindai piešķirt unikālu rangu, pamatojoties uz vērtībām vēl vienā noteiktā kolonnā. Tā ir ļoti līdzīga funkcijai rank(), taču ar nelielām atšķirībām tajā, kā funkcija apstrādā ierakstu dublikātus.

Šajā apmācībā mēs izpētīsim, kā šī funkcija darbojas, nodrošināto sintaksi un kā mēs varam to izmantot datu bāzē.







Kā tas strādā

Sāksim, paskaidrojot, kā šī funkcija darbojas. Ir labi paturēt prātā, ka funkcija ir augsta līmeņa, un mēs nevaram izskaidrot pamatā esošo ieviešanu.



Funkcija darbojas, piešķirot rangu katrai rezultātu kopas rindai, sākot no 1. ranga un palielinot par 1 katrai unikālajai vērtībai kolonnās.



Rindām ar līdzīgām vērtībām (dublikātiem) norādītajās kolonnās tiek piešķirts vienāds rangs, un nākamajai rindai ar atšķirīgu vērtību tiek piešķirts nākamais pieejamais rangs bez atstarpēm.





Kā jau minējām, funkcija neatstāj atstarpes vietās, kur ir dublētas vērtības, kas to padara atšķirīgu no funkcijas rank ().

Bieži tiek izmantota funkcija dense_rank() ranžēšanas operāciju veikšana. Piemēram, mēs varam to izmantot, lai atrastu labākos N ierakstus utt.



Funkciju sintakse:

Tālāk ir aprakstīta funkcijas dense_rank() sintakse:

DENSE_RANK() OVER (

[PARTITION BY partition_expression, ... ]

PASŪTĪT PĒC kārtošanas_izteiksmes [ASC | DESC],...

)

Dotajā sintaksē:

  1. Mēs sākam ar pašu funkciju dense_rank().
  2. OVER klauzula norāda uz loga funkciju specifikāciju sākumu. Tas nosaka, kā ranžēšana tiek piemērota rezultātu kopā.
  3. PARTITION BY partition_expression ir izvēles klauzula, kas ļauj sadalīt iegūto kopu grupās vai nodalījumos, pamatojoties uz vienu vai vairākām kolonnām. Reitings tiek piemērots katram nodalījumam atsevišķi, un rangs tiek atiestatīts jaunā nodalījumā.
  4. ORDER BY sort_expression norāda secību, kādā mēs vēlamies izmantot datu kārtošanai iegūtajos nodalījumos.

Datu paraugi

Lai parādītu, kā izmantot funkciju dense_rank(), sāksim ar tabulu ar datu paraugu. Mūsu gadījumā mēs izmantojam “pasūtījumu” tabulas paraugu šādi:

1. piemērs: Funkcijas Dense_Rank() lietojums

Mēs varam izmantot funkciju dense_rank(), lai sakārtotu iegūtos pasūtījumus, pamatojoties uz cenu. Apsveriet šādu vaicājuma piemēru:

ATLASĪT

order_id,

customer_username,

product_purchased,

DENSE_RANK() OVER (

PASŪTĪT BY

cena DISK

) cenas_rangs

NO

pasūtījumi o;

Dotajā piemērā mēs izmantojam funkciju dense_rank(), lai ranžētu datus, pamatojoties uz pasūtījumu cenām. Mēs izlaižam klauzulu PARTITION BY, jo mēs negrupējam datus.

Rezultātā iegūtais rezultāts ir šāds:

2. piemērs: NODAĻA

Mēs varam arī pievienot klauzulu PARTITION BY, lai grupētu datus dažādos segmentos, piemēram, pamatojoties uz iegādāto produktu.

Vaicājuma piemērs ir šāds:

ATLASĪT

order_id,

customer_username,

product_purchased,

DENSE_RANK() OVER (

nodalījums pēc produkta_pirkuma

PASŪTĪT BY

cena DISK

) cenas_rangs

NO

pasūtījumi o;

Tam ir jāsagrupē dati dažādās grupās, pamatojoties uz iegūtajām grupām, un jāpiemēro katras grupas vienumu rangs.

Secinājums

Šajā ziņojumā mēs uzzinājām pamatprincipus, kā izmantot un strādāt ar loga funkciju dense_rank() SQL, lai vērtībām piešķirtu rangu, pamatojoties uz konkrētām kolonnām.