查找对购买次数最多的客户做出最高销售额的员工

Meh*_*ysi -3 sql sql-server group-by aggregate-functions

我在数据库作业中遇到这个问题并需要回答这个问题:

哪位员工对购买次数最多的客户的销售额最高?

这些是我的数据库表 在此输入图像描述

这些是我尝试编写这个查询

--select Customers.Firstname,Products.Name,Sales.Quantity from Customers
--inner join Sales
--on Customers.CustomerId=Sales.CustomerId
--inner join Products
--on Sales.productId=Products.ProductId
--where Products.Name like 'Mobile'


--Select Customers.CustomerId,max(COUNT(Customers.CustomerId)) As Customecount,Emploees.EmploeeId,max(COUNT(Emploees.EmploeeId))as EmploeeeCount from Emploees
--inner join Sales
--on Emploees.EmploeeId=Sales.EmploeeId
--inner join Customers
--on Customers.CustomerId=Sales.CustomerId
--group by Customers.CustomerId,Emploees.EmploeeId            ,Count(Sales.productId)as productCount,Count(Emploees.EmploeeId)as emploeeCount,Count(Customers.CustomerId)as customerCount 

select  * from
(select Distinct Customers.CustomerId,Sales.productId,COUNT(Sales.productId)as CountProduct from Customers
inner join Sales
on Customers.CustomerId=Sales.CustomerId
inner join Emploees
on Emploees.EmploeeId=Sales.EmploeeId
group by Sales.productId,Emploees.EmploeeId,Customers.CustomerId,Sales.productId) as Result
--gr 
Run Code Online (Sandbox Code Playgroud)

但这些都不起作用

请帮我写这个查询。

Sal*_*n A 5

尝试一步步解决问题。按总数查找订单最多的客户 ID:

SELECT TOP 1 sales.customerid
FROM sales
JOIN products ON sales.productid = products.productid
GROUP BY sales.customerid
ORDER BY SUM(sales.quantity * products.price) DESC
Run Code Online (Sandbox Code Playgroud)

下一步是根据该客户的计数找到销售额最多的员工(将其更改为总计很简单):

SELECT TOP 1 sales.salespersonid
FROM sales
WHERE sales.customerid = (
    SELECT TOP 1 sales.customerid
    FROM sales
    JOIN products ON sales.productid = products.productid
    GROUP BY sales.customerid
    ORDER BY SUM(sales.quantity * products.price)
)
GROUP BY sales.salespersonid
ORDER BY COUNT(sales.salesid) DESC
Run Code Online (Sandbox Code Playgroud)

最后选择员工记录:

SELECT *
FROM employee
WHERE employeeid = (
    SELECT TOP 1 sales.salespersonid
    FROM sales
    WHERE sales.customerid = (
        SELECT TOP 1 sales.customerid
        FROM sales
        JOIN products ON sales.productid = products.productid
        GROUP BY sales.customerid
        ORDER BY SUM(sales.quantity * products.price)
    )
    GROUP BY sales.salespersonid
    ORDER BY COUNT(sales.salesid) DESC
)
Run Code Online (Sandbox Code Playgroud)