MYSQl-组_Concat中的元素计数
我是MYSQL的新手,在group_concat语句中需要一些帮助。我有下表MYSQl-组_Concat中的元素计数,mysql,sql,group-concat,Mysql,Sql,Group Concat,我是MYSQL的新手,在group_concat语句中需要一些帮助。我有下表 Seller Merchant CustomerID S1 M1 C1 S1 M1 C1 S1 M1 C2 S1 M1 C3 S1 M1 C4 S2 M2 C5 S2 M2 C6 S3 M3 C6 对于同一卖家和商户的组合,具有不同CustomerID的所有项
Seller Merchant CustomerID
S1 M1 C1
S1 M1 C1
S1 M1 C2
S1 M1 C3
S1 M1 C4
S2 M2 C5
S2 M2 C6
S3 M3 C6
对于同一卖家和商户的组合,具有不同CustomerID的所有项目以及重复次数的计数
我能够使用group_concat获得唯一客户ID的计数,但无法获得计数
SELECT * , LENGTH(CUSTIDS) - LENGTH(REPLACE(CUSTIDS,',',''))+1 AS COUNT_OF_CUSTIDS
FROM (SELECT SELLER, MERCHANT, GROUP_CONCAT(CUSTOMERID SEPARATOR '|') AS CUSTIDS
FROM TABLE
GROUP BY SELLER, MERCHANT
HAVING COUNT(DISTINCT CUSTOMERID ) >1
)
这给了我下面的结果
Seller Merchant CustomerID COUNT_OF_CUSTIDS
S1 M1 C1,C2,C3,C4 4
S2 M2 C5,C6 2
而我想要下面的
Seller Merchant CustomerID COUNT_OF_CUSTIDS
S1 M1 C1(2),C2(1),C3(1),C4(1) 4
S2 M2 C5(1),C6(1) 2
您需要首先在
卖家
/商户
/客户ID
级别进行汇总,以获得计数。然后,您可以继续进行聚合:
SELECT SELLER, MERCHANT,
COUNT(*) as COUNT_OF_CUSTIDS,
GROUP_CONCAT(CUSTOMERID, ' (', cnt, ')' SEPARATOR '|') AS CUSTIDS
FROM (SELECT SELLER, MERCHANT, COUNT(*) as cnt
FROM TABLE
GROUP BY SELLER, MERCHANT, CUSTOMERID
) t
GROUP BY SELLER, MERCHANT
HAVING COUNT(* ) > 1
您需要首先在
卖家
/商户
/客户ID
级别进行汇总,以获得计数。然后,您可以继续进行聚合:
SELECT SELLER, MERCHANT,
COUNT(*) as COUNT_OF_CUSTIDS,
GROUP_CONCAT(CUSTOMERID, ' (', cnt, ')' SEPARATOR '|') AS CUSTIDS
FROM (SELECT SELLER, MERCHANT, COUNT(*) as cnt
FROM TABLE
GROUP BY SELLER, MERCHANT, CUSTOMERID
) t
GROUP BY SELLER, MERCHANT
HAVING COUNT(* ) > 1