2012-05-14 21 views
0

我正在嘗試爲我的作業構建一個在線書店。
我想按時間列出最賣出的書籍(上週,上個月,所有時間)。
我寫了所有的時間查詢,但無法計算上週的查詢。
有人可以幫我嗎?如何在SQL中查找上週的暢銷書籍

下面是表:

TbSoldBooks (saleID, BookID, SaleDate) 

(我搜查,但找不到答案)

更新:這是有史以來最暢銷的書籍。

SELECT b.bookID, COUNT(b.bookID) AS All-Time 
FROM TbSoldBooks b 
GROUP BY b.bookID 
+0

你到目前爲止試過的查詢在哪裏? –

+2

我認爲你應該花更多的時間在數據庫上編寫查詢來獲得SQL的感覺,並且更少的時間在線搜索「答案」。這是一個玩具數據庫,SELECT語句不會破壞數據,並且您有很大機會真正學習SQL技能。 –

+0

@ AhmetEmre90:看起來很合理。現在您只需要使用指定相應SaleDate的WHERE查詢來修改該查詢。 –

回答

1
SELECT top 10 b.bookID, COUNT(b.bookID) 
FROM TbSoldBooks b 
GROUP BY b.bookID 
Where SaleDate >= DateAdd(day, -7, getDate()) -- last week 
Order by 2 desc 

SELECT top 10 b.bookID, COUNT(b.bookID) 
FROM TbSoldBooks b 
GROUP BY b.bookID 
Where SaleDate >= DateAdd(month, -1, getDate()) -- last month 
Order by 2 desc 
+1

我個人建議不要使用序號而不是列名排序:[link](http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/ 06 /壞習慣,對開球順序逐個ordinal.aspx) – Dibstar

1

好了,我不想毀了所有你的家庭作業給你,但你可以通過的BookID和COUNT每本書的銷售嘗試GROUP

編輯:我看到你對比較日期感到困惑。那麼看看DATEADD

+0

折騰'WHERE'子句,這是一個很好的答案 – swasheck