2010-02-01 85 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,又太慢了!至少我得到了别名...