我想用两个组在多行中显示一次
我的桌子是这样的

    +----+----------+-------+
    | 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/

10-15 21:26