2012-01-22 37 views
1

我有一個看起來像下面的數據表:計數值結果

 ArtistName TrackName    TrackID 

1 Pendulum  Slam     6 
2 N/A   N/A     26 
3 N/A   N/A     26 
4 N/A   N/A     26 
5 Snow Patrol Chasing Cars   17 
6 Snow Patrol Chasing Cars   17 
7 Rihanna  Love The Way You Lie 4 
8 N/A   N/A     26 
9 N/A   N/A     26 
10 Kanye West Stronger    10 
11 Rihanna  Love The Way You Lie 4 
12 N/A   N/A     26 
13 N/A   N/A     26 
14 Tinie Tempah Written In The Stars 8 
15 N/A   N/A     26 
16 N/A   N/A     26 
17 Nero   Crush On You   18 

等等

基本上我想要做的是什麼數的出現次數每個TrackID,並顯示在一列中。

SELECT Artist_Details.ArtistName, Track_Details.TrackName, Sales_Records.TrackID 
FROM Track_Details 
INNER JOIN Sales_Records ON Track_Details.TrackID = Sales_Records.TrackID 
JOIN Artist_Details ON Track_Details.ArtistID = Artist_Details.ArtistID; 

我想輸出格式爲:從該查詢它結合了其他幾個表創建上表

 ArtistName TrackName    Track ID TotalSales 

1 Pendulum  Slam     6   8 
2 Tinie Tempah Written In The Stars 8   5 
3 Rihanna  Love The Way You Lie 4   2 

最後,我想價值26不被計數並被忽略,並且不會顯示在結果中,並按TotalSales升序排列。如果可能的話,將此圖表限制爲10行。

在此先感謝,馬克

回答

1

這看起來像一個扣籃爲group by

SELECT top 10 Artist_Details.ArtistName, Track_Details.TrackName, 
     Sales_Records.TrackID, count(Sales_Records.TrackID) as TotalSales 
FROM Track_Details 
INNER JOIN Sales_Records ON Track_Details.TrackID = Sales_Records.TrackID 
JOIN Artist_Details ON Track_Details.ArtistID = Artist_Details.ArtistID 
WHERE Sales_Records.TrackID <> 26 
GROUP BY Artist_Details.ArtistName, Track_Details.TrackName, Sales_Records.TrackID 
ORDER BY count(Sales_Records.TrackID) desc 
+0

這需要精確地工作,非常感謝。有一點不行,第5行最後的分號應該被刪除,但它不會讓我編輯它! –

+0

奇怪,你應該可以提出編輯?我現在已經移除了''''。 – Andomar

+0

我可以但它不允許它,因爲我只改變了1個字符,並且最少有6個 –