2010-02-01 80 views
0

的MySQL 5.0.45請在複雜的SQL查詢幫助

表A具有以下字段(列): 1. transcation_id
2. CLIENT_NAME
3. ITEM_ID
4 ....

現在我需要找出每個客戶端通過交易次數進行了多少次交易。結果應該是這樣的:

湯姆7事務
傑克5交易
麥克2交易

如果客戶沒有交易他的名字不應該是詮釋他的名單。

預先感謝您!

+0

數字,即湯姆7交易中的7,表A中的條目數,或者它是表中的字段? – 2010-02-01 20:53:23

+0

你有幾張桌子?你可以把它倒掉嗎? – streetparade 2010-02-01 20:54:13

回答

4

如何:

select client_name, count(*) as transactions 
from TableA 
group by client_name 
order by count(*) DESC 

假設沒有交易的客戶沒有在表中(因爲表中有一欄TRANSACTION_ID),他們將不會在結果中。

+0

作品。謝謝! – lonelyloner 2010-02-01 20:59:30

+0

這是正確的,雖然我會做count(1)而不是count(*)稍微好一點的性能,至少在Oracle上是有區別的。 – Jay 2010-02-01 21:03:25

3
Select 
    Client_Name, 
    count(*) as Transactions 
from TableA 
group by Client_Name 
order by count(*) desc 
+0

這應該也有'HAVING COUNT(*)!= 0'。 – 2010-02-01 20:54:51

+0

@Shtééf:謝謝,實際上它會計算任何現有的記錄,假設如果沒有交易就不會有記錄。 – 2010-02-01 20:56:53

+0

這也是可行的。非常感謝! – lonelyloner 2010-02-01 20:59:56

1

這樣的事情?

Select client_name, count(*) As MyCount 
From YourTableA 
Group By client_name 
Having MyCount > 0 
Order by MyCount Desc 

編輯:grr,又太慢了!至少我得到了別名...