SQL OVER klauzula

Sql Over Klauzula



Jedna od najnaprednijih značajki SQL-a je klauzula OVER. To je značajka koja nam omogućuje izvođenje izračuna i primjenu funkcija SQL prozora na određeni podskup redaka unutar zadanog skupa rezultata.

Osobito je korisno kada trebate izračunati agregacije ili rangiranje za grupe redaka bez stvarnog sažimanja cijelog skupa rezultata.

Pridružite nam se u ovom vodiču dok učimo sve što trebate znati kako biste počeli raditi s klauzulom OVER.







Zahtjevi:

Prije nego što zaronimo u funkcionalnost i rad klauzule OVER, provjerite jeste li naučili osnove SQL-a. Također pretpostavljamo da imate pristup bazi podataka koju možete koristiti za provjeru svog znanja.



U našem slučaju koristit ćemo MySQL bazu podataka s uzorkom baze podataka Sakila. Samo provjerite imate li dovoljna dopuštenja i podržava li vaša baza podataka funkcije prozora.



Sintaksa:

Kao što smo ranije spomenuli, u većini slučajeva uglavnom koristimo klauzulu OVER u kombinaciji s funkcijama prozora.





Kao takvu, možemo izraziti sintaksu klauzule na sljedeći način:

(izraz) OVER (

[PARTICIJA PO particionom_izrazu, ...]

[RED PO sort_izrazu [ASC | DESC], ...]

[specifikacija_okvira]

)

U zadanoj sintaksi svaku komponentu možemo raščlaniti na sljedeći način:



  1. – Odnosi se na funkciju prozora koju želimo primijeniti na određeni prozor redaka kao što su SUM(), AVG(), ROW_NUMBER(), RANK itd.
  2. Izraz – Ovo specificira stupac ili izraz za koji se primjenjuje funkcija prozora.
  3. PARTITION BY – Ovo je izborna klauzula koja dijeli skup rezultata u particije gdje je svaka particija poput zasebne jedinice u kojoj se primjenjuje funkcija. Redovi unutar iste particije dijele iste vrijednosti u navedenim stupcima.
  4. ORDER BY – Ovo određuje redoslijed kojim se redovi u svakoj particiji obrađuju.
  5. frame_specification – Ovo je izborna klauzula koja definira okvir redaka unutar particije. Uobičajene specifikacije okvira uključuju RETKE IZMEĐU I ili RASPONA IZMEĐU I

Kad smo to riješili, istražimo neke praktične primjere kako ga koristiti.

Primjer:

Pokažimo kako koristiti klauzulu pomoću uzorka baze podataka Sakila. Razmotrimo primjer gdje trebamo odrediti ukupni prihod za svaku kategoriju filma.

Možemo koristiti funkciju prozora zbroja s klauzulom OVER i hrpom naredbi za pridruživanje kao što je prikazano u sljedećem primjeru:

IZABERI
category.name AS category_name,
film.title KAO film_title,
film.rental_rate,
SUM(plaćanje.iznos) PREKO (PARTICIJA PO kategoriji.naziv) KAO ukupni_prihod
IZ
film
PRIDRUŽITI
film_kategorija ON
film.film_id = film_category.film_id
PRIDRUŽITI
kategorija ON
film_category.category_id = kategorija.category_id
PRIDRUŽITI
inventar ON
film.film_id = inventar.film_id
PRIDRUŽITI
najam ON
inventory.inventory_id = najam.inventory_id
PRIDRUŽITI
plaćanje ON
rental.rental_id = payment.rental_id
NARUČI PO
ime kategorije,
film.naslov;

U zadanom upitu počinjemo odabirom naslova filma, stope najma i koristimo izraz zbroja (plaćanje.iznos preko particije po kategoriji.naziv) kako bismo odredili zbroj svake particije kategorije prema nazivu kategorije.

Moramo koristiti klauzulu PARTITION BY kako bismo osigurali da izračun zbroja ponovno započne od svake jedinstvene kategorije.

Rezultirajući izlaz je sljedeći:

Eto ga!

Zaključak

U ovom smo primjeru istražili osnove rada s klauzulom OVER u SQL-u. Ovo nije osnovna klauzula i zahtijeva prethodno poznavanje drugih SQL značajki.