Clauza SQL WITH a fost introdusă de Oracle în baza de date Oracle 9i release 2. Clauza SQL WITH vă permite să dați un nume unui bloc sub-interogare (un proces numit și refactorizare sub-interogare), care poate fi referit în mai multe locuri din interogarea SQL principală.
- Clauza este utilizată pentru definirea unei relații temporare, astfel încât rezultatul acestei relații temporare să fie disponibilă și să fie utilizată de interogarea asociată cu clauza WITH.
- Interogările care au o clauză WITH asociată pot fi, de asemenea, scrise folosind sub-interogări imbricate, dar adaugă mai multă complexitate pentru a citi/depana interogarea SQL.
- Clauza WITH nu este acceptată de toate sistemele de baze de date.
- Numele atribuit subinterogării este tratat ca și cum ar fi o vizualizare sau un tabel inline
- Clauza SQL WITH a fost introdusă de Oracle în baza de date Oracle 9i release 2.
Sintaxă:
WITH temporaryTable (averageValue) as (SELECT avg(Attr1) FROM Table) SELECT Attr1 FROM Table, temporaryTable WHERE Table.Attr1>temporaryTable.averageValue;>>>
converti șirul în intÎn această interogare, clauza WITH este utilizată pentru a defini o relație temporară temporaryTable care are doar 1 atribut averageValue. averageValue deține valoarea medie a coloanei Attr1 descrisă în relația Tabel. Instrucțiunea SELECT care urmează clauzei WITH va produce numai acele tupluri în care valoarea lui Attr1 în relația Table este mai mare decât valoarea medie obținută din instrucțiunea clauzei WITH.
Notă: Când se execută o interogare cu o clauză WITH, mai întâi interogarea menționată în clauză este evaluată și rezultatul acestei evaluări este stocat într-o relație temporară. În continuare, interogarea principală asociată cu clauza WITH este în sfârșit executată care ar folosi relația temporară produsă.
Întrebări
data localaExemplul 1: Găsiți toți angajații al căror salariu este mai mare decât salariul mediu al tuturor angajaților.
Denumirea relatiei: Angajat
| Card de identitate al angajatului | Nume | Salariu |
|---|---|---|
| 100011 | Smith | 50000 |
| 100022 | Factură | 94000 |
| 100027 | Se | 70550 |
| 100845 | Walden | 80000 |
| 115585 | Erik | 60000 |
| 1100070 | Kate | 69000 |
Interogare SQL:
Ieșire:
| Companie aeriană |
|---|
| Airbus 380 |
Explicaţie: Salariul total al tuturor piloților Airbus 380 = 298.830 și cel al Boeing = 45000. Salariul mediu al tuturor piloților din tabel Pilot = 57305. Deoarece doar salariul total al tuturor piloților Airbus 380 este mai mare decât salariul mediu obținut, deci Airbus 380 se află în relația de ieșire.
Puncte importante:
- Clauza SQL WITH este bună atunci când este utilizată cu instrucțiuni SQL complexe, mai degrabă decât cu cele simple
- De asemenea, vă permite să descompuneți interogările SQL complexe în altele mai mici, ceea ce facilitează depanarea și procesarea interogărilor complexe.
- Clauza SQL WITH este practic o înlocuire a subinterogării normale.
