我正在使用Microsoft Access数据库创建一个Visual Basic程序。
数据库有两个表。
Players
,包含姓名,点击数,atBats和团队列Teams
我需要帮助编写一个SQL语句来查找特定联盟 National 或 American 联盟中击球率最高的玩家。
Batting Average
公式为hits
除以atBats
。
代码:
SELECT
name, (hits / atBats) AS bAVG
FROM
Players
INNER JOIN
Teams ON Teams.team = Players.Team
WHERE
Teams.league = 'American'
AND bAVG = (SELECT MAX(bAVG) FROM Players);
我认为问题在于别名列bAVG
。
答案 0 :(得分:0)
连接表中没有列bAVG,因此出错。你可以使用类似的东西:
从玩家中选择名称,(点击/ atBats)作为玩家INNER的bAVG 加入团队Teams.team = Players.Team WHERE Teams.league = '美国'AND(命中/ atBats)=(从中选择MAX((命中/ atBats) 播放器));
答案 1 :(得分:0)
您可以使用order by
和top
:
SELECT TOP 1 name, (hits/atBats) AS bAVG
FROM Players INNER JOIN
Teams
ON Teams.team = Players.Team
WHERE Teams.league = 'American'
ORDER BY hits/atBats DESC;