首页 > 解决方案 > MySQL 分组使用 group_concat 然后 Group BY

问题描述

我有一张这样的桌子:

在此处输入图像描述

基本上,我想对所有名称进行分组并计算此类分组的数量,例如:

在此处输入图像描述

由于有 2 个做饭和清洁用户,1 个用于洗涤,4 个用于烹饪。

我正在尝试使用 group_concat

SELECT group_concat(DISTINCT name) AS name, count(*)
FROM warehouse.test1
GROUP BY guid

但是,这不起作用,因为我需要按分组进行分组,然后计算这些分组。

我不知道如何对分组进行分组然后计数。

在此先感谢,我感谢任何提醒!

更新 根据我试过的答案

SELECT   groupings, COUNT(*)
FROM     (SELECT   group_concat(DISTINCT name) AS groupings
          FROM     warehouse.test1
          GROUP BY saguid) t
GROUP BY groupings;

但是,我认为它

# groupings, COUNT(*)
'cleaning,cooking', '2'
'cooking', '2'
'washing', '1'

烹饪时应该数 4 吗?

标签: mysqlsqlgroup-bycountsubquery

解决方案


我会用另一个查询包装这个查询来计算分组数据:

SELECT   groupings, COUNT(*)
FROM     (SELECT   group_concat(DISTINCT name) AS groupings
          FROM     warehouse.test1
          GROUP BY saguid) t
GROUP BY groupings

推荐阅读