Supposed I ont les tableaux suivants:requête SQL de trouver la ligne max à partir des moyennes agrégées
Sailor(sid, sname, age)
Boat(bid, sid)
Chaque bateau peut avoir de nombreux marins, et chaque marin individuel peut servir sur de nombreux bateaux. Ce que je veux faire est de trouver le bateau avec l'âge moyen le plus élevé des marins.
je peux trouver l'âge moyen du marin sur chaque bateau avec cette sous-requête:
SELECT b.bid, AVG(s.age) AS avg_age FROM sailor s, boat b
WHERE b.sid = s.sid
GROUP BY b.bid
Cependant, je suis coincé sur la façon de trouver la ligne maximale de cette sous-requête plus loin.
P.S. Je suis également à la recherche d'une requête compatible MySQL, si cela fait une différence.
+ 1 laid mais correct. Faire une requête séparée d'abord avec la suggestion de LIMIT de dnagirl peut être préférable à une sous-requête de cette complexité si elle n'est pas bouclée. Notez qu'il n'y a pas de rupture de lien avec des auto-null-jointures; Si deux bateaux ont le même âge moyen, deux lignes seront retournées. – bobince
Oui, définitivement moche. En général, je n'aime pas faire «GROUP BY» dans une sous-requête. Yuck! –
C'est la solution que je recherchais exactement. Même si ce n'est pas élégant et que la solution de @ dnagirl est préférable dans une situation réelle, j'aimerais comprendre comment la sous-requête SQL fonctionne dans ce cas. – ejel