【问题标题】:MySQL - trying to combine `GROUP_CONCAT` with `COUNT()`MySQL - 尝试将 `GROUP_CONCAT` 与 `COUNT()` 结合使用
【发布时间】:2018-06-29 06:03:17
【问题描述】:
SELECT A.id  ,A.Prospect_Id, GROUP_CONCAT(DISTINCT A.MYVIEW SEPARATOR ' , ') AS myview
FROM
   (SELECT id, Prospect_Id, CONCAT(Current_Status, '(', count(Current_Status), ')') AS MYVIEW     
    FROM prospectdata1
    GROUP BY Prospect_Id) A
GROUP BY  A.prospect_id
HAVING myview REGEXP 'PHONE_FOLLOW_UP.*DUPLICATE'

输出:

预期输出:

【问题讨论】:

  • 请在您的问题中包含示例数据(以文本而非图像的形式)、表格定义和预期输出
  • Current_Status添加到内部GROUP BY
  • 请不要链接图像,而是将结果粘贴为文本。然后,不要将您的请求简化为仅显示代码。用文字告诉我们您想要达到的目标并解释您的表格。似乎prospectdata1 可以包含每个潜在客户的多条记录,并且您希望在字符串中显示潜在客户及其所有状态,您还希望在其中显示其每个状态的出现次数。然后,您希望将结果限制在那些至少出现一种状态不止一次的项目中。这是正确的吗?

标签: mysql group-concat


【解决方案1】:

您需要同时按 Prospect_Id 和 Current_Status 进行分组:

SELECT MIN(MinId) AS id
     , Prospect_Id
     , GROUP_CONCAT(CONCAT(Current_Status, '(', SUM(Cnt), ')') SEPARATOR ' , ') AS myview
FROM (
  SELECT Prospect_Id
       , Current_Status
       , COUNT(*) Cnt
       , MIN(id) MinId
   FROM prospectdata1
  WHERE Current_Status REGEXP 'PHONE_FOLLOW_UP.*DUPLICATE'
  GROUP BY Prospect_Id
      , Current_Status
) A
GROUP BY prospect_id

【讨论】:

  • 谢谢大家...特别感谢 Scrum Meister .. 它对我有用
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-30
  • 2013-07-02
  • 1970-01-01
  • 2011-10-29
  • 2014-08-18
相关资源
最近更新 更多