您好,我想通过比较1996年10月和1996年9月的产品收入来找出收入增长最快的前3种产品和收入下降最多的前3种产品。
我使用的数据集位于w3c's online platform,所需的数据在以下3个表中:“订单”,“ OrderDetails”,“产品”。理想情况下,我希望能够在w3c平台上运行代码。
到目前为止,我可以在1996年9月输出Orders数据。如何向其中插入1996年10月的Orders数据并计算收入变化?
SELECT
od.ProductID,
MIN(o.OrderDate) as SalesStart,
MAX(o.OrderDate) as SalesEnd,
SUM(od.Quantity) as SoldQty,
SUM(od.Quantity * p.Price) as SoldAmt,
SUM(od.Quantity * p.Price) * 1.0 /
(
SELECT SUM(odAll.Quantity * pAll.Price)
FROM OrderDetails odAll
INNER JOIN Orders as oAll
ON oAll.OrderID = odAll.OrderID
INNER JOIN Products as pAll
ON odAll.ProductID = pAll.ProductID
WHERE oAll.OrderDate LIKE '1996-09%') as PortionInTotalSales
FROM Orders as o
INNER JOIN OrderDetails as od
ON o.OrderID = od.OrderID
INNER JOIN Products as p
ON od.ProductID = p.ProductID
WHERE o.OrderDate LIKE '1996-09%'
GROUP BY od.ProductID
答案 0 :(得分:0)
在WHERE子句中使用BETWEEN语句:WHERE o.OrderDate BETWEEN'1996-09-01'和'1996-10-31'w3schools.com/sql/sql_between.asp
SELECT
od.ProductID,
MIN(o.OrderDate) as SalesStart,
MAX(o.OrderDate) as SalesEnd,
SUM(od.Quantity) as SoldQty,
SUM(od.Quantity * p.Price) as SoldAmt,
SUM(od.Quantity * p.Price) * 1.0 /
(
SELECT SUM(odAll.Quantity * pAll.Price)
FROM OrderDetails odAll
INNER JOIN Orders as oAll
ON oAll.OrderID = odAll.OrderID
INNER JOIN Products as pAll
ON odAll.ProductID = pAll.ProductID
WHERE oAll.OrderDate BETWEEN '1996-09-01' and '1996-10-31') as PortionInTotalSales
FROM Orders as o
INNER JOIN OrderDetails as od
ON o.OrderID = od.OrderID
INNER JOIN Products as p
ON od.ProductID = p.ProductID
WHERE o.OrderDate BETWEEN '1996-09-01' and '1996-10-31'
GROUP BY od.ProductID
答案 1 :(得分:0)
我可能会在这里参加工会。这是一个查询,该查询应该适用于MySQL,但不一定适用于其他数据库。
test