如何编写SQL查询遍历另一查询结果并计算对应姓名的平均年龄
解决方案
使用LEFT JOIN关联Names表和Person表,再按姓名分组计算平均年龄,就能批量得到每个姓名对应的结果,无需硬编码单个查询:
SELECT n.name, AVG(p.age) AS average_age FROM Names n LEFT JOIN Person p ON n.name = p.name GROUP BY n.name;
说明:
LEFT JOIN保证Names表中的所有姓名都会被输出,哪怕Person表中没有对应姓名的记录(此时平均年龄会返回NULL)。- 如果希望没有对应记录时显示
0而非NULL,可以用COALESCE函数处理:SELECT n.name, COALESCE(AVG(p.age), 0) AS average_age FROM Names n LEFT JOIN Person p ON n.name = p.name GROUP BY n.name; - 分组时必须基于
Names表的name字段(n.name),确保每个姓名只输出一行结果。
内容的提问来源于stack exchange,提问作者S. Klostermeyer
相关产品推荐
相关产品推荐

