如何基于多列中的Agent统计不重复的案件数量
解决Agent案件数统计问题的SQL语句
现有数据表
| CaseNum | FirstAgent | NextAgent |
|---|---|---|
| 1234 | Rama | Raja |
| 1234 | Rama | Rama |
| 5678 | Siva | Rama |
| 5678 | Siva | Krishna |
目标输出表
| Agent | Case Count |
|---|---|
| Rama | 2 |
| Raja | 1 |
| Siva | 1 |
| Krishna | 1 |
实现SQL语句
核心思路是先将两个Agent字段的数据合并,去除同一案件下同一Agent的重复记录,再分组统计案件数:
SELECT Agent, COUNT(DISTINCT CaseNum) AS "Case Count" FROM ( -- 合并FirstAgent和NextAgent列 SELECT CaseNum, FirstAgent AS Agent FROM your_table_name UNION ALL SELECT CaseNum, NextAgent AS Agent FROM your_table_name ) AS combined_agents -- 去重同一案件下的同一Agent,再分组统计 GROUP BY Agent -- 可选:按案件数降序、Agent名称排序 ORDER BY "Case Count" DESC, Agent;
说明
- 将语句中的
your_table_name替换为实际数据表名; - 内层用
UNION ALL把两个Agent字段拆分为独立行,保留案件号关联; - 外层通过
COUNT(DISTINCT CaseNum)确保同一案件中同一Agent仅被计数一次,最终按Agent分组得到统计结果。
内容的提问来源于stack exchange,提问作者vissubabu
相关产品推荐
相关产品推荐

