SQL с использованием group_concat с количеством каждого объединенного элемента, а не общим количеством в строке - PullRequest
1 голос
/ 18 марта 2019

MYSQl - Количество элементов внутри Group_Concat

Я переписал это как эту скрипку , но она дает ошибку.

Кто-нибудь может помочь?

1 Ответ

1 голос
/ 18 марта 2019

Что касается устранения ошибки и получения правильного результата, вам просто нужно вернуть CUSTOMERID из агрегированного подзапроса (столбец уже является частью предложения GROUP BY).

Обновленный запрос:

 SELECT SELLER, 
       COUNT(*) as COUNT_OF_CUSTIDS,
       GROUP_CONCAT(CUSTOMERID, ' (', cnt, ')' SEPARATOR '|') AS CUSTIDS
FROM (
    SELECT SELLER, CUSTOMERID, COUNT(*) as cnt
    FROM docs
    GROUP BY SELLER, CUSTOMERID
) t
GROUP BY SELLER
HAVING COUNT(*) > 1

Возвращает:

| SELLER | COUNT_OF_CUSTIDS | CUSTIDS              |
| ------ | ---------------- | -------------------- |
| S1     | 3                | C2 (2)|C1 (2)|C3 (3) |
| S2     | 3                | C3 (1)|C2 (1)|C1 (2) |

Демонстрация на DB Fiddle

...