首页 > 解决方案 > 我从面试中解决这个 SQL 问题的方法正确吗?

问题描述

我是 SQL 新手(刚刚完成了关于 Edx 的课程),并且在我知道任何事情之前就提出了这个面试问题,并认为我现在应该试一试。想知道我的解决方案是否正确。谢谢!

问题

给定以下两个数据库表,team 和 player(在下面的第 8-12 行中提供了相应的数据库列),编写一个 SQL 语句,该语句将返回从平均球员最高到最短排序的前 10 支球队的名称列表。假设玩家身高存储为表示英寸数的整数。

团队

id
league
name
division

播放器

id
name
height
weight
team_id

解决方案

SELECT TOP 10 T.Team, P.Name
FROM Team AS T
JOIN Player AS P on T.id = P.team_id
ORDER BY height DESC;

标签: sqlinner-join

解决方案


问题陈述要求您选择团队的名称,而不是选择高度。GROUP BY您需要按照球员的平均身高对球队名称进行排序,并且您可以通过与AVG()函数一起使用来执行此操作,而无需选择平均身高作为最终结果集的一部分。

SELECT TOP 10 T.name FROM team T
INNER JOIN player P
ON T.id = P.team_id
GROUP BY T.id
ORDER BY AVG(P.height) DESC

推荐阅读