Funció SQL DENSE_RANK().

Funcio Sql Dense Rank



Les funcions de finestra són una característica crucial en SQL i juguen un paper fonamental en càlculs i operacions de dades complexes en bases de dades SQL. Una de les funcions de les funcions de la finestra SQL és dense_rank().

La funció DENSE_RANK() ens permet assignar un rang únic a cada fila dins d'un conjunt de resultats en funció dels valors d'una columna més especificada. És molt semblant a la funció rank() però amb lleugeres diferències en com la funció gestiona els registres duplicats.

En aquest tutorial, explorarem com funciona aquesta funció, la sintaxi proporcionada i com podem utilitzar-la en una base de dades.







Com funciona

Comencem explicant com funciona aquesta funció. És bo tenir en compte que la funció és d'alt nivell i no podem explicar la implementació subjacent.



La funció funciona assignant un rang a cada fila del conjunt de resultats a partir del rang 1 i augmentant en 1 per a cada valor únic de les columnes.



Les files amb valors similars (duplicats) a les columnes especificades s'assignen amb la mateixa classificació i la següent fila amb un valor diferent s'assigna amb la següent classificació disponible, sense cap espai.





Com hem esmentat, la funció no deixa buits on hi ha valors duplicats, cosa que la fa diferent de la funció rank().

Un ús comú de la funció dense_rank() és realitzar les operacions de classificació. Per exemple, el podem utilitzar per trobar els N registres principals, etc.



Sintaxi de la funció:

A continuació es descriu la sintaxi de la funció dense_rank():

DENSE_RANK() SOBRE (

[PARTICIÓ PER expressió_partició,...]

COMANDA PER expressió_ordenar [ASC | DESC],...

)

En la sintaxi donada:

  1. Comencem amb la funció dense_rank() en si.
  2. La clàusula OVER indica l'inici de les especificacions de la funció de la finestra. Això defineix com s'aplica la classificació dins del conjunt de resultats.
  3. L'expressió_partició PARTITION BY és una clàusula opcional que ens permet dividir el conjunt resultant en grups o particions basats en una o més columnes. La classificació s'aplica per separat a cada partició i la classificació es reinicia en una nova partició.
  4. L'expressió ORDER BY especifica l'ordre en què volem utilitzar per ordenar les dades a les particions resultants.

Dades de mostra

Per demostrar com utilitzar la funció dense_rank(), comencem amb una taula amb dades de mostra. En el nostre cas, utilitzem una taula de 'comandes' d'exemple de la següent manera:

Exemple 1: ús de la funció Dense_Rank().

Podem utilitzar la funció dense_rank() per classificar les comandes resultants en funció del preu. Considereu la consulta d'exemple següent:

SELECCIONA

order_id,

nom_usuari_client,

producte_comprat,

DENSE_RANK() SOBRE (

COMANDA PER

preu DISC

) rang_preu

DE

ordres o;

A l'exemple donat, utilitzem la funció dense_rank() per classificar les dades en funció del preu de les comandes. Ometem la clàusula PARTITION BY perquè no agrupem les dades.

La sortida resultant és la següent:

Exemple 2: PARTICIÓ PER

També podem afegir la clàusula PARTITION BY per agrupar les dades en diversos segments, com ara segons el producte comprat.

Un exemple de consulta és el següent:

SELECCIONA

order_id,

nom_usuari_client,

producte_comprat,

DENSE_RANK() SOBRE (

partició per producte_comprat

COMANDA PER

preu DISC

) rang_preu

DE

ordres o;

Això hauria d'agrupar les dades en diversos grups en funció dels grups resultants i aplicar la classificació dels ítems de cada grup.

Conclusió

En aquesta publicació, hem après els fonaments d'utilitzar i treballar amb la funció de finestra dense_rank() a SQL per assignar una classificació als valors basats en columnes específiques.