MySQL Grouping с использованием group_concat, а затем Group BY - PullRequest
1 голос
/ 26 июня 2019

У меня есть такая таблица:

enter image description here

По сути, я хочу сгруппировать все имена и указать количество таких группировок, например:

enter image description here

Поскольку есть 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 для приготовления?

1 Ответ

1 голос
/ 27 июня 2019

Я бы обернул этот запрос другим запросом для объединения сгруппированных данных:

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