您好我是在Access中使用SQL的新手,并且我试图通过使用where而不是in来查找数据库中的第11条记录。我继续在该行中发现缺少运算符错误,并且想知道是否有任何想法。
SELECT TOP 1 Passenger.Name, SUM(Manifest.Ticketprice) AS [Total Amount
Spent on Tickets]
FROM Passenger INNER JOIN Manifest ON Passenger.PassengerNumber =
Manifest.PassengerNumber
GROUP BY Passenger.Name
WHERE Passenger.Name NOT IN
(
SELECT TOP 10 Passenger.Name
FROM Passenger INNER JOIN Manifest ON Passenger.PassengerNumber =
Manifest.PassengerNumber
GROUP BY Passenger.Name
ORDER BY SUM(Manifest.Ticketprice) DESC;
)
;
答案 0 :(得分:1)
你真的很亲密。
SELECT TOP 1 Passenger.Name, SUM(Manifest.Ticketprice) AS [Total Amount
Spent on Tickets]
FROM Passenger INNER JOIN
Manifest
ON Passenger.PassengerNumber = Manifest.PassengerNumber
GROUP BY Passenger.Name
WHERE Passenger.Name NOT IN (
SELECT TOP 10 Passenger.Name
FROM Passenger INNER JOIN
Manifest
ON Passenger.PassengerNumber = Manifest.PassengerNumber
GROUP BY Passenger.Name
ORDER BY SUM(Manifest.Ticketprice) DESC;
) ;
您需要将乘客姓名与乘客姓名进行比较,而非票价。
还有其他方法可以编写使用票价的查询,但您可以使用乘客名称。
注意:如果passenger.number
唯一标识每位乘客(以及名称,则子查询中不需要join
。