如何使用 NOT IN 函数在 Top 10 列表中查找#10?

问题描述 投票:0回答:1

目标是在航班数据库中找到累积 20,000 英里或更多里程的乘客。我被要求找到总里程数最高的第 10 位乘客。首先,我需要使用 TOP 函数创建前 10 名列表,然后从那里找到第 10 位乘客。我用来查找前 10 名的代码如下,列表中的第 10 位乘客是正确的乘客/总里程,但我似乎不知道如何只显示该乘客而不是整个列表。也许我的原始代码中的某些内容是错误的,但我尝试添加到代码中以仅显示第 10 位乘客的所有内容都会给我一条错误消息。有人告诉我使用 NOT IN 函数是一个好方法,因为您知道第 10 位乘客不在前 9 名中,但每次我尝试将 NOT IN 函数添加到我的代码中时,我都会收到一条语法错误消息。谁能帮忙解释一下如何使用此处的 NOT IN 功能来仅显示我列表中的第 10 位乘客?

SELECT TOP 10 Passenger.Name, SUM(Manifest.Miles) AS [Total Miles], COUNT(*) AS [Number of Flights]
FROM Passenger INNER JOIN Manifest ON Passenger.PassengerNumber = Manifest.PassengerNumber
GROUP BY Passenger.Name
HAVING SUM(Manifest.Miles) >= 20000
ORDER BY SUM(Manifest.Miles) DESC;

我尝试添加 WHERE 行并将 NOT IN 函数添加到该行,但不断收到错误消息,我认为这与我正在跟踪的变量是求和函数(行驶的总英里数之和)有关。我可能将其添加到错误的位置或使用了错误的措辞,但我不确定。我尝试的每件事都会返回某种错误消息。

sql mysql ms-access
1个回答
0
投票

Access SQL 中的可信方法如下:

Select Top 1 * From Table1
Where Id Not In
    (Select Top 10 Id From Table1 Order By Miles Desc)
Order By Miles Desc
© www.soinside.com 2019 - 2024. All rights reserved.