Clàusula SQL OVER

Clausula Sql Over



Una de les característiques més avançades d'SQL és la clàusula OVER. És una característica que ens permet realitzar els càlculs i aplicar les funcions de la finestra SQL sobre un subconjunt específic de files dins d'un conjunt de resultats determinat.

És especialment útil quan necessiteu calcular les agregacions o les classificacions per a grups de files sense reduir el conjunt de resultats.

Uneix-te a nosaltres en aquest tutorial mentre aprenem tot el que cal saber per començar a treballar amb la clàusula OVER.







Requisits:

Abans d'endinsar-nos en la funcionalitat i el funcionament de la clàusula OVER, assegureu-vos que teniu els conceptes bàsics d'SQL fora del camí. També suposem que teniu accés a una base de dades que podeu utilitzar per provar els vostres coneixements.



En el nostre cas, utilitzarem la base de dades MySQL amb la base de dades d'exemple Sakila. Només assegureu-vos que teniu suficients permisos i que el vostre motor de base de dades admet les funcions de la finestra.



Sintaxi:

Com hem esmentat anteriorment, en la majoria dels casos, utilitzem principalment la clàusula OVER juntament amb les funcions de la finestra.





Com a tal, podem expressar la sintaxi de la clàusula de la següent manera:

(expressió) OVER (

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

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

[especificació_marc]

)

En la sintaxi donada, podem desglossar cada component de la següent manera:



  1. : es refereix a la funció de finestra que volem aplicar sobre una finestra específica de files com SUM(), AVG(), ROW_NUMBER(), RANK, etc.
  2. Expressió: especifica una columna o expressió a la qual s'aplica la funció de finestra.
  3. PARTITION BY: aquesta és una clàusula opcional que divideix el conjunt de resultats en particions on cada partició és com una unitat separada on s'aplica la funció. Les files de la mateixa partició comparteixen els mateixos valors a les columnes especificades.
  4. ORDER BY: especifica l'ordre en què es processen les files de cada partició.
  5. frame_specification: aquesta és una clàusula opcional que defineix el marc de files dins de la partició. Les especificacions de marc habituals inclouen ROWS BETWEEN I o RANGE BETWEEN I

Amb això fora del camí, explorem alguns exemples pràctics sobre com utilitzar-lo.

Exemple:

Demostrem com utilitzar la clàusula utilitzant la base de dades d'exemple Sakila. Penseu en un exemple en què hem de determinar els ingressos totals per a cada categoria de pel·lícules.

Podem utilitzar la funció de finestra de suma amb la clàusula OVER i un munt de declaracions d'unió com es mostra a l'exemple següent:

SELECCIONA
category.name AS nom_categoria,
film.title AS film_title,
film.rental_rate,
SUMA(pagament.import) OVER (PARTICIÓ PER categoria.nom) COM ingressos_total
DE
pel·lícula
UNEIX-TE
film_category ON
film.film_id = film_category.film_id
UNEIX-TE
categoria ON
film_category.category_id = category.category_id
UNEIX-TE
inventari activat
film.film_id = inventory.film_id
UNEIX-TE
lloguer ON
inventory.inventory_id = lloguer.inventory_id
UNEIX-TE
pagament activat
rental.rental_id = payment.rental_id
DEMANAT PER
category.name,
títol.pel·lícula;

A la consulta donada, comencem seleccionant el títol de la pel·lícula, la tarifa de lloguer i utilitzem l'expressió suma (pagament.import sobre partició per categoria.nom) per determinar la suma de cada partició de categoria pel nom de la categoria.

Hem d'utilitzar la clàusula PARTITION BY per assegurar-nos que el càlcul de la suma es reinicia a cada categoria única.

La sortida resultant és la següent:

Aquí ho tens!

Conclusió

En aquest exemple, hem explorat els fonaments de treballar amb la clàusula OVER a SQL. Aquesta no és una clàusula bàsica i requereix familiaritat prèvia amb altres funcions SQL.