Brug af Indre Subforespørgsler i the FROM-Sektionen
En indre underforespørgsel skaber en tabel, som vi derefter udfører operationer på i den ydre forespørgsel.
Ud fra dette kan vi konkludere, at vi også kan bruge en indre forespørgsel inden for FROM
sektionen for at vælge noget fra denne tabel.
Lad os overveje et eksempel, hvor vi skal arbejde med employees
, hvis salary
er over en bestemt værdi. Men i stedet for en WHERE
klausul, vil vi bruge en indre forespørgsel:
SELECT * FROM ( SELECT * From employees WHERE salary >= 70000 ) AS high_salary_employees
Vi har oprettet en ny tabel ved hjælp af en indre underforespørgsel, som vi kan arbejde med og indsamle information fra.
Bemærk
Bemærk, at for en sådan tabel er det essentielt at give et alias.
Hvornår kan dette være nyttigt?
En sådan forespørgsel er meget læsbar; nogle gange kan den erstatte en WHERE
klausul.
Derudover, hvis du har brug for at arbejde ikke med hele tabellen men kun med en filtreret del, kan en indre underforespørgsel inden for FROM
sektionen være yderst praktisk.
Swipe to start coding
Din opgave er at hente det gennemsnitlige budget (budget
kolonne) for alle ledelsesafdelinger fra department
tabellen. Brug en indre underforespørgsel i FROM
sektionen for kun at filtrere ledelsestypen af afdeling. Brug også aliaset manager_departments
for denne tabel, så opgaven kontrolleres korrekt.
Svaret skal kun have én kolonne, average_budget
. Dette er et alias for aggregeringsfunktionen AVG()
.
Bemærk
Denne opgave kunne også udføres ved hjælp af en
WHERE
klausul, men vi bruger en indlejret forespørgsel her for at øve denne syntaks, som vil være nyttig til at løse mere komplekse problemer i fremtiden.
Korte instruktioner
- Hent gennemsnitsværdien af
budget
kolonnen. - Tildel aliaset
average_budget
til den kolonne. - I
FROM
klausulen skal du skrive en indlejret forespørgsel. - I den indlejrede forespørgsel skal du vælge alle kolonner fra
department
tabellen. - I den indlejrede forespørgsel skal du bruge
WHERE
klausulen med betingelsentype = 'manager'
. - Tildel aliaset
manager_departments
til den indlejrede forespørgsel.
Løsning
Tak for dine kommentarer!