Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MYSQl-组_Concat中的元素计数_Mysql_Sql_Group Concat - Fatal编程技术网

MYSQl-组_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的所有项

我是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的所有项目以及重复次数的计数

我能够使用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