2017-08-29 37 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