组函数MySql的使用无效

时间:2015-10-22 01:58:22

标签: mysql sql database group-by

所以我试图找到收入最多的客户代表。 要做到这一点,我创建了一个视图:

CREATE VIEW employeeRevenue AS
SELECT E.EmployeeID AS ID, SUM(A.ClosingBid) AS Total
FROM Auction A, Employee E
WHERE A.EmployeeID = E.EmployeeID;

然后,我在这个视图上运行一个程序

CREATE PROCEDURE getBestCustomerRep()
BEGIN
SELECT E.*
FROM employeeRevenue RV, Employee E
WHERE E.EmployeeID = RV.ID AND MAX(RV.Total);
End
$$

它一直告诉我,我对组功能的使用无效。 我已经尝试添加GROUP BY和HAVING语句(但我不明白为什么在这种情况下会需要它们)

为什么这不起作用?

2 个答案:

答案 0 :(得分:0)

您可以使用ORDER BYLIMIT

SELECT E.*
FROM employeeRevenue RV join
     Employee E
     ON E.EmployeeID = RV.ID 
ORDER BY RV.Total DESC
LIMIT 1;

请注意使用正确的,明确的JOIN语法。

此外,如果有多个员工具有相同的最大值,则只返回一个。

答案 1 :(得分:0)

使用像sum()这样的聚合函数时,必须在查询末尾使用group by子句,在视图中尝试:

CREATE VIEW employeeRevenue AS
SELECT E.EmployeeID AS ID, SUM(A.ClosingBid) AS Total
FROM Auction A, Employee E
WHERE A.EmployeeID = E.EmployeeID
Group by
E.Employeeid;

只要将它放在子查询中,就可以在where子句中使用aggregate函数:

Where e.employeeid = (select employeeid, max(total) from view)