2017-10-11 85 views
1

想象一下,我有一張記錄服裝店交易的表格。每件產品都有不同的顏色(如不同的顏色)。我想寫一個查詢,它會返回每件商品數量的計數,但也告訴我每件商品有多少種不同的顏色。MYSQL計算每種商品的顏色數量

所以,如果我有一個表是這樣的:

+------------+ 
|transactions| 
+------+-------+ 
| item | color | 
+------+-------+ 
|shirt | red | 
|shirt | red | 
|shirt | blue | 
|shirt | green | 
|hat | blue | 
|hat | red | 
|pants | blue | 
|pants | blue | 
|pants | blue | 
+------+-------+ 

我想這看起來是這樣的結果:

+------+-------+--------+ 
| item | count | colors | 
+------+-------+--------+ 
|shirt | 4  | 3  | 
|hat | 2  | 2  | 
|pants | 3  | 1  | 
+------+-------+--------+ 

獲取各個已售商品的數量是很容易。我知道我可以使用查詢,如:

SELECT item, COUNT(*) as count FROM transactions GROUP BY item 

我不知道的是如何也得到不同顏色的每個項目數的計數的部分。

+4

'計數(不同的顏色)' – jarlh

回答

6

您正在尋找count(distinct)

SELECT item, COUNT(*) as num, COUNT(DISTINCT color) as num_colors 
FROM transactions 
GROUP BY item; 
+0

完美!這正是我需要的!非常感謝! – Funkytown