single
Använda Inre Del-Frågor i FROM-Sektionen
Svep för att visa menyn
En inre subfråga skapar en tabell som du sedan utför operationer på i den yttre frågan.
Av detta kan du dra slutsatsen att du även kan använda en inre fråga inom FROM-sektionen för att välja något från denna tabell.
Tänk på ett exempel där du behöver arbeta med employees vars salary är över ett visst värde. Men istället för en WHERE-sats ska du använda en inre fråga:
123456SELECT * FROM ( SELECT * From employees WHERE salary >= 70000 ) AS high_salary_employees
En ny tabell har skapats med en inre subfråga som du kan arbeta med och samla information från.
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ättläst; 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 subfråga i FROM-sektionen vara mycket användbar.
Svep för att börja koda
Din uppgift är att hämta genomsnittlig budget (budget-kolumnen) för alla chefsavdelningar från tabellen department. Använd en inre subfråga i FROM-sektionen för att filtrera endast de avdelningar som är av typen chef. Använd dessutom aliaset manager_departments för denna tabell så att uppgiften kan kontrolleras korrekt.
Svaret ska endast innehålla en kolumn, average_budget. Detta är ett alias för aggregatfunktionen AVG().
Denna uppgift kan även lösas med en WHERE-sats, men vi använder en nästlad fråga här för att öva på denna syntax, vilket kommer vara användbart för att lösa mer komplexa problem i framtiden.
Kortfattade instruktioner
- Hämta genomsnittsvärdet för kolumnen
budget. - Tilldela aliaset
average_budgettill den kolumnen. - I
FROM-satsen ska du skriva en nästlad fråga. - I den nästlade frågan, välj alla kolumner från tabellen
department. - I den nästlade frågan, använd
WHERE-satsen med villkorettype = 'manager'. - Tilldela aliaset
manager_departmentstill den nästlade frågan.
Lösning
Tack för dina kommentarer!
single
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal