找到最大行:SQL查询从假设我有以下表格汇总平均
Sailor(sid, sname, age)
Boat(bid, sid)
每艘船可以有很多水手,和每一个人的水手可以担任许多船只。我想要做的是找到水手平均年龄最高的船。
我能找到的水手对每艘船的平均年龄与此子查询:
SELECT b.bid, AVG(s.age) AS avg_age FROM sailor s, boat b
WHERE b.sid = s.sid
GROUP BY b.bid
不过,我被困在如何找到这个子查询中的最大行进一步上。
P.S.我也在寻找与MySQL兼容的查询,如果这有什么不同。
+1难看但正确。首先用dnagirl的LIMIT建议做一个单独的查询可能比这个复杂的子查询更可取,如果它没有循环的话。请注意,与自我无效连接没有平局;如果两艘船碰巧有相同的平均年龄,则会返回两排船。 – bobince 2009-09-29 01:07:18
是的,绝对丑陋。我通常不喜欢在子查询中执行“GROUP BY”。呸! – 2009-09-29 01:09:55
这是我正在寻找的解决方案。尽管它并不优雅,并且@ dnagirl的解决方案在实际情况下可能更可取,但我想了解SQL子查询在这种情况下是如何工作的。 – ejel 2009-09-29 17:13:16