logo

SQL | lausekkeen kanssa

Oracle esitteli SQL WITH -lauseen Oracle 9i versio 2 -tietokannassa. SQL WITH -lause antaa sinun antaa alikyselylohkolle nimen (prosessi, jota kutsutaan myös alikyselyn uudelleenmuodostamiseksi), johon voidaan viitata useissa paikoissa SQL-pääkyselyssä.

  • Lausea käytetään väliaikaisen suhteen määrittämiseen siten, että tämän väliaikaisen suhteen tulos on käytettävissä ja sitä käyttää WITH-lauseeseen liittyvä kysely.
  • Kyselyt, joihin liittyy WITH-lause, voidaan kirjoittaa myös sisäkkäisillä alikyselyillä, mutta tämä lisää SQL-kyselyn lukemisen/virheenkorjauksen monimutkaisuutta.
  • Kaikki tietokantajärjestelmät eivät tue WITH-lausetta.
  • Alakyselylle määritettyä nimeä käsitellään ikään kuin se olisi upotettu näkymä tai taulukko
  • Oracle esitteli SQL WITH -lauseen Oracle 9i versio 2 -tietokannassa.

Syntaksi:



WITH temporaryTable (averageValue) as (SELECT avg(Attr1) FROM Table) SELECT Attr1 FROM Table, temporaryTable WHERE Table.Attr1>väliaikaistaulukko.averageValue;>> 

muuntaa char merkkijonoksi java

Tässä kyselyssä WITH-lausetta käytetään määrittämään tilapäinen relaatio väliaikaistaulukko, jolla on vain 1 attribuutti keskiarvo. mediumValue sisältää sarakkeen Attr1 keskiarvon, joka on kuvattu suhteessa Taulukkoon. WITH-lausetta seuraava SELECT-käsky tuottaa vain ne monikot, joissa Attr1:n arvo suhteessa Taulukkoon on suurempi kuin WITH-lauseesta saatu keskiarvo.

Huomautus: Kun WITH-lauseella varustettu kysely suoritetaan, ensin lauseessa mainittu kysely arvioidaan ja tämän arvioinnin tulos tallennetaan väliaikaiseen suhteeseen. Tämän jälkeen suoritetaan lopulta WITH-lauseeseen liittyvä pääkysely, joka käyttäisi tuotettua väliaikaista suhdetta.



Kyselyt

Esimerkki 1: Etsi kaikki työntekijät, joiden palkka on suurempi kuin kaikkien työntekijöiden keskipalkka.
Suhteen nimi: Työntekijä

Henkilöstökortti Nimi Palkka
100011 Smith 50 000
100022 Laskuttaa 94 000
100027 Hän itse 70550
100845 Walden 80 000
115585 Erik 60 000
1100070 Kate 69 000

SQL-kysely:



WITH totalSalary(Airline, total) as (SELECT Airline, sum(Salary) FROM Pilot GROUP BY Airline), airlineAverage(avgSalary) as (SELECT avg(Salary) FROM Pilot ) SELECT Airline FROM totalSalary, airlineAverage WHERE totalSalary.total>airlineAverage.avgSalary;>

Lähtö:

Lentoyhtiö
Airbus 380

Selitys: Airbus 380:n kaikkien lentäjien kokonaispalkka = 298 830 ja Boeingin = 45 000. Kaikkien lentäjien keskipalkka taulukossa Pilotti = 57305. Koska vain Airbus 380:n kaikkien lentäjien kokonaispalkka on suurempi kuin saatu keskipalkka, joten Airbus 380 on lähtösuhteessa.

vertailla javassa

Tärkeitä kohtia:

  • SQL WITH -lause on hyvä, kun sitä käytetään monimutkaisten SQL-lauseiden kanssa yksinkertaisten käskyjen sijaan
  • Sen avulla voit myös pilkkoa monimutkaiset SQL-kyselyt pienemmiksi, mikä helpottaa monimutkaisten kyselyiden virheenkorjausta ja käsittelyä.
  • SQL WITH -lause on periaatteessa normaalin alikyselyn pudotuskorvaus.