【发布时间】:2014-06-20 22:23:20
【问题描述】:
我对 SQL 还很陌生,很难解决问题。
'对于销量最高的五种产品中的每一种都至少销售一种产品的销售人员,所有产品的总销售额是多少?确保查询以降序返回总销售额。仅考虑在 @target_date 参数之前的六个月内发生的销售。'
数据库中存在 3 个表。
销售人员 (SalesPersonID,SalesYTD)
SalesOrderHeader (SalesOrderID,OrderDate,ShipDate)
SalesOrderDetail(SalesOrderID、SalesOrderDetailID、OrderQty、ProductID、UnitPrice)
这是我目前所处的位置。我需要将我所拥有的内容编译成一份声明并进行必要的修改。请帮忙!
要按单位获取前 5 名最高销售额,以下语法应该起作用:
SELECT
ProductID,
SUM(Orderqty*Unitprice)
FROM SalesOrderDetail
GROUP BY ProductID
WHERE Orderqty >=1
AND COUNT(productID) =5
ORDER BY SUM(Orderqty*Unitprice) DESC
LIMIT 5;
对于 target_date 参数,我认为应该是这样的?
SELECT
SalespersonID AS ‘Sales Representative’,
SalesYTD AS ‘Total Sales’, target_date
FROM Salesperson
WHERE target_date BETWEEN ‘01-DEC-13’ AND ’01-May-14’;
【问题讨论】:
-
如果表描述完整,则
SalesOrderDetail到SalesPerson之间没有连接。 -
假设它通过 SalesPersonID 的 FK 建立了连接。抱歉 - 忘了提。
-
我将表格缩小到必要的字段。