为了在月底给他们奖金,我试图显示所有销售人员的姓名,他们已经销售了10个或更多的订单。
这是我的表架构

CREATE TABLE Salesperson
(
SalespersonId BIGINT,
Name VARCHAR(50),
BirthDate DATE,
Salary INT
);

CREATE TABLE Orders
(
OrderId BIGINT,
OrderDate DATETIME,
SalespersonId BIGINT,
ProductId BIGINT,
SalesPrice DECIMAL(9,2)
);

然后这是我的问题
SELECT Salesperson.Name
FROM Salesperson
JOIN Orders
ON Salesperson.SalespersonId=Orders.SalespersonId
WHERE COUNT(Order.SalespersonId)> 10

我不确定应该将COUNT()函数放在哪里,以使它返回销售人员姓名列表。

最佳答案

您需要GROUP BY,然后使用HAVING子句筛选:

SELECT Salesperson.Name
FROM Salesperson
JOIN Orders
ON Salesperson.SalespersonId=Orders.SalespersonId
GROUP BY Salesperson.Name
HAVING COUNT(Order.SalespersonId)> 10

HAVING子句中使用的谓词:
COUNT(Order.SalespersonId)> 10

适用于每个Salesperson.Name组。因此,它将过滤掉所有人口小于等于cc的群体。

关于mysql - SQL COUNT()查询放置,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37621899/

10-11 11:27