MYSQL计算每种物品的颜色数

Fun*_*own 1 mysql sql select

想象一下,我有一张记录服装店交易的表格.每个项目有不同的种类(如不同的颜色).我想写一个查询,它将返回每件商品的销售数量,但也告诉我每种商品的销售颜色有多少.

所以,如果我有一个这样的表:

+------------+
|transactions|
+------+-------+
| item | color |
+------+-------+
|shirt | red   |
|shirt | red   |
|shirt | blue  |
|shirt | green |
|hat   | blue  |
|hat   | red   |
|pants | blue  |
|pants | blue  |
|pants | blue  |
+------+-------+
Run Code Online (Sandbox Code Playgroud)

我想要一个看起来像这样的结果:

+------+-------+--------+
| item | count | colors |
+------+-------+--------+
|shirt | 4     | 3      |
|hat   | 2     | 2      |
|pants | 3     | 1      |
+------+-------+--------+
Run Code Online (Sandbox Code Playgroud)

获得每件商品的计数很容易.我知道我可以使用如下查询:

SELECT item, COUNT(*) as count FROM transactions GROUP BY item
Run Code Online (Sandbox Code Playgroud)

我不确定的部分是如何计算每个项目的不同颜色的数量.

Gor*_*off 6

您正在寻找count(distinct):

SELECT item, COUNT(*) as num, COUNT(DISTINCT color) as num_colors
FROM transactions
GROUP BY item;
Run Code Online (Sandbox Code Playgroud)