如何使用SQL / T-SQL在给定日期找到前N个销售商品?

时间:2014-11-23 03:44:03

标签: sql sql-server tsql

用户提供日期和数字N.当天生产N个畅销商品。该日期显示该畅销书的标题,公司,当前库存和销售副本数量。应根据销售情况订购产品:最畅销的产品应该是第一个,第二个应该是最好的,等等。

DBMS:SQL Server

表格:

  • Item(upc(pk),标题,类型,类别,公司,年份,价格,股票)
  • PurchaseItem(receiptId(pk),upc(pk),数量)

这是我到目前为止所拥有的:

SELECT TOP(N) 
    DATE(year) as date, I.title, I.company, I.stock, P.quantity, I.upc
FROM 
    Item I, Purchase P
WHERE 
    I.upc = P.upc
GROUP BY 
    I.upc
ORDER BY 
    SUM(P.quantity) DESC

只需要一些帮助来纠正这个问题并进行检查。

谢谢!

1 个答案:

答案 0 :(得分:0)

您可以在cte

的指定日期获得每件商品的总销售数量

然后,您可以应用顶级逻辑来按顺序对销售总量进行过滤。

declare @inputDate datetime

;with cte 
as
( select I.upc, SUM(quantity) as TotalSold
  from Item I
  join Purchase P
  on I.upc = P.upc
  and I.date = @inputDate
  group by I.upc
)
SELECT TOP 10 I.date, I.upc, I.title, I.company, I.stock, cte.TotalSold
FROM Item I
join cte
on I.upc = cte.upc
order by cte.TotalSold desc