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)
但这些都不起作用
请帮我写这个查询。
尝试一步步解决问题。按总数查找订单最多的客户 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)
归档时间: |
|
查看次数: |
2749 次 |
最近记录: |