Oggi vediamo il seguente esercizio di LeetCode a tema SQL:
Write a solution to report the average experience years of all the employees for each project rounded to 2 digit
Return the result table in any order.
Guardando le tabelle fornite dall’esercizio si può notare che ci sono due tabelle: Project (con project_id, employee_id) e Employee (con employee_id, name, experience_years).
L’obiettivo è calcolare la media degli anni di esperienza per ogni progetto. Ogni progetto può avere più dipendenti, e dobbiamo calcolare la media degli anni di esperienza di tutti i dipendenti assegnati a quel progetto.
Detto ciò, la soluzione che proponiamo noi è la seguente:
SELECT p.project_id, ROUND(AVG(e.experience_years), 2) AS average_years
FROM Project p
LEFT JOIN Employee e
ON p.employee_id = e.employee_id
GROUP BY p.project_idIn questa query:
- La
LEFT JOINtra Project e Employee mantiene tutti i progetti, anche quelli senza dipendenti assegnati - La condizione
ON p.employee_id = e.employee_idcollega ogni record del progetto al relativo dipendente AVG(e.experience_years)calcola la media degli anni di esperienza per ogni progettoROUND(..., 2)arrotonda il risultato a 2 decimaliGROUP BY p.project_idraggruppa i risultati per progetto
Questo esercizio è un classico esempio di JOIN con aggregazione e calcolo della media.
Se hai dubbi in merito non esitare a contattarci sui nostri social, saremo più che felici di risponderti :)