Bruk av Indre Underforespørsler i the FROM-Seksjonen
En indre underforespørsel lager en tabell som vi deretter utfører operasjoner på i den ytre forespørselen.
Fra dette kan vi konkludere med at vi også kan bruke en indre forespørsel i FROM
-seksjonen for å velge noe fra denne tabellen.
La oss vurdere et eksempel der vi trenger å jobbe med employees
hvis salary
er over en viss verdi. Men i stedet for en WHERE
-klausul, vil vi bruke en indre forespørsel:
SELECT * FROM ( SELECT * From employees WHERE salary >= 70000 ) AS high_salary_employees
Vi har opprettet en ny tabell ved hjelp av en indre underforespørsel som vi kan jobbe med og samle informasjon fra.
Merk
Legg merke til at for en slik tabell er det viktig å gi et alias.
Når kan dette være nyttig?
En slik spørring er svært lesbar; noen ganger kan den erstatte en WHERE
-klausul.
I tillegg, hvis du trenger å jobbe ikke med hele tabellen men bare med en filtrert del, kan en indre underspørring i FROM
-seksjonen være svært nyttig.
Swipe to start coding
Din oppgave er å hente den gjennomsnittlige budsjettet (budget
-kolonnen) for alle lederavdelinger fra department
-tabellen. Bruk en indre underspørring i FROM
-seksjonen for å filtrere bare ledertypen av avdeling. Bruk også aliaset manager_departments
for denne tabellen slik at oppgaven blir sjekket riktig.
Responsen skal ha kun én kolonne, average_budget
. Dette er et alias for aggregeringsfunksjonen AVG()
.
Merk
Denne oppgaven kunne også blitt gjort ved å bruke en
WHERE
-klausul, men vi bruker en nestet spørring her for å øve på denne syntaksen, som vil være nyttig for å løse mer komplekse problemer i fremtiden.
Korte Instruksjoner
- Hent gjennomsnittsverdien av
budget
-kolonnen. - Tildel aliaset
average_budget
til den kolonnen. - I
FROM
-klausulen må du skrive en nestet spørring. - I den nestede spørringen, velg alle kolonner fra
department
-tabellen. - I den nestede spørringen, bruk
WHERE
-klausulen med betingelsentype = 'manager'
. - Tildel aliaset
manager_departments
til den nestede spørringen.
Løsning
Takk for tilbakemeldingene dine!