SQL 使用 group_concat 与每个连接项目的计数,而不是在一行中的总计数

Posted

技术标签:

【中文标题】SQL 使用 group_concat 与每个连接项目的计数,而不是在一行中的总计数【英文标题】:SQL using group_concat with count of each concatenated item rather total count in a row 【发布时间】:2019-08-09 00:21:42 【问题描述】:

mysql - Count of elements inside Group_Concat

我改写为this fiddle,但是给出的错误。

有人可以帮忙吗?

【问题讨论】:

【参考方案1】:

就问题而言,要解决错误并获得正确的结果,您只需从聚合子查询中返回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) |

Demo on DB Fiddle

【讨论】:

你能进一步了解一下吗 @programmergeeky:这与我最初回答的问题不同(例如,现在您涉及两个表,而原始问题中只有一个)。你需要问一个新问题,这就是它在 *** 上的工作方式。另外,我不明白您为什么不接受我的回答,因为我认为我正确回答了您原始问题... 是的,我是新来的,所以很难重新发布一个新的 qs,但我只是这样做了

以上是关于SQL 使用 group_concat 与每个连接项目的计数,而不是在一行中的总计数的主要内容,如果未能解决你的问题,请参考以下文章

MySQL group_concat 与连接

SQL左连接和group_concat返回重复数据

Spark SQL 替换 MySQL 的 GROUP_CONCAT 聚合函数

mysql中的group_concat与“case when”条件

在 SQL Server 中完成 MYSQL 的 Group_Concat [重复]

Hibernate:如何使用 CONCAT 和 GROUP_CONCAT