SQL OVER -lauseke

Sql Over Lauseke



Yksi SQL:n edistyneimmistä ominaisuuksista on OVER-lauseke. Se on ominaisuus, jonka avulla voimme suorittaa laskelmia ja soveltaa SQL-ikkunatoimintoja tietylle rivien osajoukolle tietyssä tulosjoukossa.

Se on erityisen hyödyllinen, kun sinun on laskettava riviryhmien aggregaatiot tai sijoitukset ilman, että koko tulosjoukkoa kutistetaan.

Liity meihin tässä opetusohjelmassa, kun opimme kaiken siitä, mitä sinun on tiedettävä, jotta pääset alkuun OVER-lausekkeen kanssa.







Vaatimukset:

Ennen kuin sukeltaamme OVER-lauseen toimivuuteen ja toimintaan, varmista, että sinulla on SQL:n perusteet poissa tieltä. Oletamme myös, että sinulla on pääsy tietokantaan, jonka avulla voit testata tietosi.



Meidän tapauksessamme käytämme MySQL-tietokantaa Sakilan mallitietokannan kanssa. Varmista vain, että sinulla on riittävät käyttöoikeudet ja että tietokantamoottorisi tukee ikkunatoimintoja.



Syntaksi:

Kuten aiemmin mainitsimme, useimmissa tapauksissa käytämme pääasiassa OVER-lausetta ikkunatoimintojen yhteydessä.





Sellaisenaan voimme ilmaista lauseen syntaksin seuraavasti:

(lauseke) YLI (

[PARTITION BY osion_lauseke, ...]

[ORDER BY lajittelulauseke [ASC | DESC], ...]

[frame_specifikaatio]

)

Annetussa syntaksissa voimme jakaa jokaisen komponentin seuraavasti:



  1. – Se viittaa ikkunatoimintoon, jota haluamme käyttää tietyssä riviikkunassa, kuten SUM(), AVG(), ROW_NUMBER(), RANK jne.
  2. Lauseke – Tämä määrittää sarakkeen tai lausekkeen, jolle ikkunatoimintoa käytetään.
  3. PARTITION BY – Tämä on valinnainen lauseke, joka jakaa tulosjoukon osioihin, joissa jokainen osio on kuin erillinen yksikkö, jossa toimintoa käytetään. Saman osion riveillä on samat arvot määritetyissä sarakkeissa.
  4. ORDER BY – Tämä määrittää järjestyksen, jossa kunkin osion rivit käsitellään.
  5. frame_specification – Tämä on valinnainen lauseke, joka määrittää osion rivien kehyksen. Yleisiä kehysmäärityksiä ovat ROWS BETWEEN AND tai RANGE BETWEEN AND

Kun se on poissa tieltä, tutkikaamme joitain käytännön esimerkkejä sen käytöstä.

Esimerkki:

Esitellään lauseen käyttöä Sakilan mallitietokannan avulla. Harkitse esimerkkiä, jossa meidän on määritettävä kunkin elokuvaluokan kokonaistulot.

Voimme käyttää summa-ikkunatoimintoa OVER-lauseen ja joukon liitoslausekkeiden kanssa seuraavan esimerkin mukaisesti:

VALITSE
kategoria.nimi AS luokan_nimi,
film.title AS film_title,
film.rental_rate,
SUMMA(maksu.summa) YLI (OSIO luokan.nimen mukaan) AS kokonaistuotto
FROM
elokuva
LIITTYÄ SEURAAN
film_category PÄÄLLÄ
film.film_id = film_category.film_id
LIITTYÄ SEURAAN
luokka PÄÄLLÄ
film_category.category_id = luokka.luokkatunnus
LIITTYÄ SEURAAN
varasto PÄÄLLÄ
film.film_id = inventory.film_id
LIITTYÄ SEURAAN
vuokraus PÄÄLLÄ
inventory.inventory_id = vuokra.varastotunnus
LIITTYÄ SEURAAN
maksu PÄÄLLÄ
vuokra.vuokratunnus = maksu.vuokratunnus
TILAA
Kategorian nimi,
film.title;

Aluksi annetussa kyselyssä valitsemme elokuvan nimen, vuokrahinnan ja käytämme lauseketta summa (maksu.summa osion yli kategorian.nimi) määrittääksemme kunkin luokkaosion summan luokan nimen perusteella.

Meidän on käytettävä PARTITION BY -lausetta varmistaaksemme, että summan laskenta alkaa uudelleen jokaisessa yksilöllisessä kategoriassa.

Tuloksena oleva tulos on seuraava:

Siinä se on!

Johtopäätös

Tässä esimerkissä tutkimme SQL:n OVER-lauseen kanssa työskentelyn perusteita. Tämä ei ole peruslauseke ja vaatii aiempaa perehtymistä muihin SQL-ominaisuuksiin.