2012-05-14 2 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에 대한 느낌을 얻기 위해 데이터베이스에 쿼리를 작성하는 데 더 많은 시간을 소비해야하고 "the"대답에 대해서는 온라인에서 검색하는 시간을 줄여야한다고 생각한다. 장난감 데이터베이스이기 때문에 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/bad-habits-to-kick-order-by-ordinal.aspx) – Dibstar

1

글쎄, 난 당신을 위해 모든 숙제를 망치고 싶지는 않지만 각 책의 판매 bookID로서 의해 COUNTGROUP에 시도 할 수 있습니다.

편집 : 날짜 비교에 대해 혼란스러워합니다. 그런 다음 DATEADD을 살펴보십시오.

+0

WHERE 절에 던져 넣으십시오. 위의 답변은 – swasheck

관련 문제