You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何统计故障原因出现次数并在同库另一张表生成汇总表?

解决方案

核心逻辑是按cause字段分组,将同组的downtime值用+拼接,同时统计每组的记录数作为occurence。以下是主流数据库的实现代码:

MySQL

查询语句

SELECT 
  GROUP_CONCAT(downtime SEPARATOR '+') AS downtime,
  cause,
  COUNT(*) AS occurence
FROM 原表名
GROUP BY cause;

插入到新表

INSERT INTO 新表名(downtime, cause, occurence)
SELECT 
  GROUP_CONCAT(downtime SEPARATOR '+') AS downtime,
  cause,
  COUNT(*) AS occurence
FROM 原表名
GROUP BY cause;

PostgreSQL

查询语句

SELECT 
  STRING_AGG(downtime, '+' ORDER BY downtime) AS downtime,
  cause,
  COUNT(*) AS occurence
FROM 原表名
GROUP BY cause;

插入到新表

INSERT INTO 新表名(downtime, cause, occurence)
SELECT 
  STRING_AGG(downtime, '+' ORDER BY downtime) AS downtime,
  cause,
  COUNT(*) AS occurence
FROM 原表名
GROUP BY cause;

SQL Server

2017及以上版本(支持STRING_AGG)

SELECT 
  STRING_AGG(downtime, '+') AS downtime,
  cause,
  COUNT(*) AS occurence
FROM 原表名
GROUP BY cause;

旧版本(用STUFF+FOR XML PATH实现拼接)

SELECT 
  STUFF((SELECT '+' + downtime FROM 原表名 t2 WHERE t2.cause = t1.cause FOR XML PATH('')), 1, 1, '') AS downtime,
  cause,
  COUNT(*) AS occurence
FROM 原表名 t1
GROUP BY cause;

插入到新表

将上述对应版本的SELECT语句嵌入INSERT即可:

INSERT INTO 新表名(downtime, cause, occurence)
-- 这里放入对应版本的SELECT语句

注意:必须按cause分组,不要误用唯一id字段进行分组或聚合,否则会无法合并同原因的记录。

内容的提问来源于stack exchange,提问作者mariem

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 04:35:06