MYSQL计算每种商品的颜色数量

问题描述:

想象一下,我有一张记录服装店交易的表格。每件产品都有不同的颜色(如不同的颜色)。我想写一个查询,它会返回每件商品数量的计数,但也告诉我每件商品有多少种不同的颜色。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

您正在寻找count(distinct)

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

完美!这正是我需要的!非常感谢! – Funkytown