2017-08-29 83 views
0

我有一个SQL查询,显示我的客户和产品的每次购买如何计算两个类别的不同值?

client | product 
----------------------- 
Lucy Lu | Banana 
Lucy Lu | Banana 
Lucy Lu | Pineapple  
Mad Damon | Banana 
Mad Damon | Apple 
Mad Damon | Apple 
Peter Fox | Banana 
Peter Fox | Banana 
Peter Fox | Banana 
Peter Fox | Apple  
Peter Fox | Apple 

我想不同的这些查询,但每个产品每个客户的数量,所以我可以为每一个客户看到多少每一个产品他买:

client | product | count 
---------------------------- 
Lucy Lu | Banana | 2 
Lucy Lu | Pineapple | 1 
Mad Damon | Banana | 1 
Mad Damon | Apple  | 2 
Peter Fox | Banana | 3 
Peter Fox | Apple  | 2 

count(DISTINCT product)count(DISTINCT client)count(*)GROUP BY (client)GROUP BY (product)尝试过,但没有得到一个有用的解决方案。 当我用SELECT DISTINCT [查询的其余部分]尝试时,我得到我想要的但没有计数列。

+4

'选择客户,产品,从T组COUNT(*)的客户端,[DBMS](https://en.wikipedia.org/wiki/DBMS)您使用product' –

+0

? Postgres的?甲骨文? –

回答

1

您不需要使用DISTINCT。一个简单的GROUP BY和COUNT会完成这个诀窍。

奥托Shavadze建议此查询:

select client, product, count(*) 
from t 
group by client, product; 

这里您根据的(客户,产品)对不同值组。 COUNT会给你这些组中每行的计数。

+0

如果@Oto Shavadze将他的评论发布为答案,我已准备好将其删除。 –

+0

非常感谢!那是。 – oli

0

试试这个查询,你会得到输出。 这里test_data是表名。请用你的table_name替换它。

SELECT count(product) as count,client, product from test_data group by product,client