SQL OVER záradék

Sql Over Zaradek



Az SQL egyik legfejlettebb funkciója az OVER záradék. Ez egy olyan szolgáltatás, amely lehetővé teszi számunkra a számítások elvégzését és az SQL ablakfüggvények alkalmazását a sorok meghatározott részhalmazára egy adott eredményhalmazon belül.

Ez különösen akkor hasznos, ha a sorcsoportok összesítését vagy rangsorolását kell kiszámítani anélkül, hogy a teljes eredménykészletet össze kellene csukni.

Csatlakozzon hozzánk ebben az oktatóanyagban, hiszen mindent megtudunk arról, amit tudni kell ahhoz, hogy elkezdhesse dolgozni az OVER záradékkal.







Követelmények:

Mielőtt belevetnénk magunkat az OVER záradék funkcionalitásába és működésébe, győződjön meg arról, hogy az SQL alapjai nincsenek az útból. Feltételezzük továbbá, hogy hozzáfér egy adatbázishoz, amellyel tesztelheti tudását.



Esetünkben a MySQL adatbázist fogjuk használni a Sakila mintaadatbázissal. Csak győződjön meg arról, hogy rendelkezik elegendő jogosultsággal, és az adatbázismotor támogatja az ablakfunkciókat.



Szintaxis:

Mint korábban említettük, a legtöbb esetben az OVER záradékot használjuk az ablak függvényekkel együtt.





Mint ilyen, a következőképpen fejezhetjük ki a záradék szintaxisát:

(kifejezés) OVER (

[PARTÍCIÓ SZERINT partíciókifejezés, ...]

[ORDER BY rendezési_kifejezés [ASC | DESC], ...]

[frame_specifikáció]

)

Az adott szintaxisban az egyes komponenseket a következőképpen bonthatjuk fel:



  1. – Arra az ablakfüggvényre utal, amelyet egy adott sorablakra szeretnénk alkalmazni, például SUM(), AVG(), ROW_NUMBER(), RANK stb.
  2. Kifejezés – Megadja azt az oszlopot vagy kifejezést, amelyre az ablakfüggvény vonatkozik.
  3. PARTITION BY – Ez egy opcionális záradék, amely az eredményhalmazt partíciókra osztja, ahol minden partíció olyan, mint egy külön egység, ahol a függvényt alkalmazzák. Az azonos partíción belüli sorok ugyanazokat az értékeket osztják meg a megadott oszlopokban.
  4. ORDER BY – Meghatározza az egyes partíciókban lévő sorok feldolgozási sorrendjét.
  5. frame_specification – Ez egy opcionális záradék, amely meghatározza a partíción belüli sorok keretét. Az általános keretspecifikációk közé tartozik a ROWS BETWEEN AND vagy a RANGE BETWEEN AND .

Ha ez nem megy, nézzünk meg néhány gyakorlati példát a használatára.

Példa:

Mutatjuk be a záradék használatát a Sakila mintaadatbázis segítségével. Vegyünk egy példát, ahol meg kell határoznunk az egyes filmkategóriák összbevételét.

Használhatjuk az összeg ablak függvényt az OVER záradékkal és egy csomó csatlakozási utasítással, amint az a következő példában látható:

KIVÁLASZTÁS
kategória.név AS kategória_név,
film.title AS film_title,
film.rental_rate,
SUM(fizetés.összeg) TÚL (PARTÍCIÓ kategória.név SZERINT) AS teljes_bevétel
TÓL TŐL
film
CSATLAKOZIK
film_category BE
film.film_id = film_category.film_id
CSATLAKOZIK
kategória BE
film_category.category_id = kategória.kategória_azonosítója
CSATLAKOZIK
készlet BE
film.film_id = inventory.film_id
CSATLAKOZIK
bérlet BE
inventory.inventory_id = rental.inventory_id
CSATLAKOZIK
fizetés BE
rental.rental_id = fizetés.bérleti_azonosító
RENDEZÉS
kategória név,
film cím;

Az adott lekérdezésben a film címének, bérleti díjának kiválasztásával kezdjük, és a sum (payment.amount over partition by category.name) kifejezést használva meghatározzuk az egyes kategóriák felosztásának összegét a kategória neve alapján.

A PARTITION BY záradékot kell használnunk annak biztosítására, hogy az összeg kiszámítása minden egyedi kategóriában újrainduljon.

A kapott kimenet a következő:

Tessék, itt van!

Következtetés

Ebben a példában megvizsgáltuk az SQL OVER záradékkal való munkavégzés alapjait. Ez nem egy alapvető záradék, és más SQL-szolgáltatások előzetes ismeretét igényli.