Använda Inre Underfrågor i FROM-Sektionen
En inre subfråga skapar en tabell med vilken vi sedan utför operationer i den yttre frågan.
Från detta kan vi dra slutsatsen att vi också kan använda en inre fråga inom FROM
-sektionen för att välja något från denna tabell.
Låt oss överväga ett exempel där vi behöver arbeta med employees
vars salary
är över ett visst värde. Men istället för en WHERE
-klausul kommer vi att använda en inre fråga:
SELECT * FROM ( SELECT * From employees WHERE salary >= 70000 ) AS high_salary_employees
Vi har skapat en ny tabell med en inre subfråga med vilken vi kan arbeta och samla information.
Notera
Observera att för en sådan tabell är det viktigt att ange ett alias.
När kan detta vara användbart?
En sådan fråga är mycket läsbar; ibland kan den ersätta en WHERE
-sats.
Dessutom, om du behöver arbeta inte med hela tabellen utan bara med en filtrerad del, kan en inre underfråga inom FROM
-sektionen vara extremt användbar.
Swipe to start coding
Din uppgift är att hämta den genomsnittliga budgeten (budget
-kolumnen) för alla ledningsavdelningar från department
-tabellen. Använd en inre underfråga i FROM
-sektionen för att filtrera endast ledningstypen av avdelning. Använd också aliaset manager_departments
för denna tabell så att uppgiften kontrolleras korrekt.
Svaret ska bara ha en kolumn, average_budget
. Detta är ett alias för aggregatfunktionen AVG()
.
Notera
Denna uppgift skulle också kunna göras med en
WHERE
-sats, men vi använder en nästlad fråga här för att öva på denna syntax, vilket kommer att vara användbart för att lösa mer komplexa problem i framtiden.
Kortfattade instruktioner
- Hämta det genomsnittliga värdet av
budget
-kolumnen. - Tilldela aliaset
average_budget
till den kolumnen. - I
FROM
-satsen behöver du skriva en nästlad fråga. - I den nästlade frågan, välj alla kolumner från
department
-tabellen. - I den nästlade frågan, använd
WHERE
-satsen med villkorettype = 'manager'
. - Tilldela aliaset
manager_departments
till den nästlade frågan.
Lösning
Tack för dina kommentarer!