我正在处理一个简单的问题集,但似乎找不到产生相同错误的问题:“FROM 子句中的语法错误”。
问题涉及在这一刻使用各种数据库来查找“哪个员工销售的产品最多?”
这是我的代码
SELECT (Employees.FirstName + Employees.LastName) as Employee, SUM(Orders.Quantity)
FROM Employees, Orders
JOIN Employees ON Orders.EmployeeID=Employees.EmployeeID
JOIN OrderDetails ON Orders.OrderID=OrderDetails.OrderID
GROUP BY Employee
ORDER BY max(SUM(Quantity)) DESC;
如果我误解了某些语法的使用,请告诉我。我还在学习。
感谢您的帮助!
答案 0 :(得分:0)
当您使用 ANSI JOIN 时,您不会在 FROM
子句中列出所有表。只需列出第一个表,其他表在 JOIN
中。
您也不能将聚合函数嵌套为 MAX(SUM(Quantity))
。如果要查找销量最高的员工,请按数量订购,然后使用 TOP 1
获取第一行。
无需加入 OrderDetails
,因为您没有使用该表中的任何内容。
查询应该是:
SELECT TOP 1 (Employees.FirstName + Employees.LastName) as Employee, SUM(Orders.Quantity) AS Quantity
FROM Employees
JOIN Orders ON Orders.EmployeeID=Employees.EmployeeID
GROUP BY Employee
ORDER BY Quantity DESC;
请注意,如果销量最高的商品并列平局,则只会显示其中之一。获取所有这些更复杂,因为您需要第二个查询才能获得最大值。见sql HAVING max(count()) return zero rows