我想用两个组在多行中显示一次
我的桌子是这样的
+----+----------+-------+
| ID | BRAND | TYPE |
+----+----------+-------+
| 1 | A | Clothes |
| 2 | A | Hat |
| 3 | A | Hat |
| 4 | A | Hat |
| 5 | B | Jeans |
| 6 | B | Jeans |
| 7 | B | Hat |
| 8 | C | Clothes |
| 9 | C | Jeans |
| 10 | C | Jeans |
| 11 | C | Hat |
+----+-------+-----------+
我的问题是这样的
SELECT brand,
type,
COUNT(*) AS total
FROM store
GROUP BY brand, type
当我运行该查询时,结果是
-----------------------------
| BRAND | TYPE | TOTAL |
-----------------------------
| A | Clothes | 1 |
| A | Hat | 3 |
| B | Jeans | 2 |
| B | Hat | 1 |
| C | Clothes | 1 |
| C | Jeans | 2 |
| C | Hat | 1 |
------------------------------
这不是我期望的结果。我只想显示一次
Brand
,如果有多个相同的值,下面的Type
也显示一次。更新:预期结果
-------------------------------------------
| BRAND | TYPE | TOTAL |
-------------------------------------------
| A | Clothes, Hat | 4 |
| B | Jeans, Hat | 3 |
| C | Clothes, Jeans, Hat | 4 |
-------------------------------------------
最佳答案
在Group_Concat
子句中使用Distinct
函数,可以在brand
组下的逗号分隔字符串中获得所有不同且唯一的类型。
使用Sum
函数计算
请尝试以下操作:
SELECT brand,
GROUP_CONCAT(DISTINCT type) As type,
SUM(total) AS total
FROM store
GROUP BY brand
关于mysql - SQL Group by 2列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52605628/