SELECT Z.AvgScore Score, Z.Dept Dept, Z.Clerk_Name name FROM
(SELECT AVG(P3.Score) AvgScore, P3.Clerk_Name Clerk_Name, D3.Dept Dept
FROM Productivity P3, Personnel D3
WHERE P3.CLERK_NAME = D3.rname
GROUP BY P3.Clerk_Name, D3.Dept) Z,
(SELECT MAX(AvgScore) MaxScore, X.Dept Dept FROM
(SELECT AVG(P2.Score) AvgScore, P2.Clerk_Name Clerk_Name, D2.Dept Dept
FROM Productivity P2, Personnel D2
WHERE P2.CLERK_NAME = D2.rname
GROUP BY P2.Clerk_Name, D2.Dept) X
GROUP BY X.Dept) Y
WHERE Z.AvgScore = Y.MaxScore AND Z.Dept = Y.Dept
Κοινώς πιάσε το αυτί σου ανάποδα... Καλώς ήλθες στον υπέροχο κόσμο της Oracle!
Πάντως θα γινόταν πολύ πιο απλό με 1-2 functions (μια που επιστρέφει το μέσο βαθμό εργαζομένου και μια που επιστρέφει το μέγιστο βαθμό ανά τμήμα).
Το παραπάνω query θα σου επιστρέψει πολλούς υπαλλήλους ανά τμήμα σε περίπτωση ισοβαθμίας.
Νατάσα Μανουσοπούλου