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

Postgres聚合操作中的过滤问题:任务表审核分歧数据处理

嘿,我来帮你搞定这个Postgres聚合过滤的问题!根据你的场景,我们需要找出那些两位审核者意见不一致的待审核实体,对吧?下面给你几个实用的解决方案:

1. 快速找出不一致的实体(仅返回实体名)

如果只需要知道哪些实体的审核意见有分歧,这个简洁的查询就够用了:

SELECT entity_name
FROM tasks
GROUP BY entity_name
-- 可选:确保每个实体确实分配给了两位不同的审核者,过滤异常数据
HAVING COUNT(DISTINCT reviewer_email) = 2
   AND MIN(result) <> MAX(result);

解释:

  • GROUP BY entity_name 把同一个实体的所有审核记录归为一组
  • COUNT(DISTINCT reviewer_email) = 2:这一步是可选的,但能帮你排除那些只分配给了一位审核者的异常记录(毕竟你的业务逻辑是每个实体生成两条任务)
  • MIN(result) <> MAX(result):因为布尔类型的MIN是false,MAX是true,如果两者不相等,说明组里同时存在true和false的结果,也就是两位审核者意见不一致。
2. 查看不一致实体的详细审核信息

如果需要看到具体是哪两位审核者意见不合,以及他们各自的结果,可以用自连接的方式:

SELECT 
    t1.entity_name,
    t1.reviewer_email AS 审核者1邮箱,
    t1.result AS 审核者1结果,
    t2.reviewer_email AS 审核者2邮箱,
    t2.result AS 审核者2结果
FROM tasks t1
JOIN tasks t2 
    ON t1.entity_name = t2.entity_name
    AND t1.reviewer_email <> t2.reviewer_email
    AND t1.result <> t2.result;

这个查询直接把同一个实体下,审核者不同且结果不同的记录配对起来,能直观看到每一组分歧的详情。

3. 兼容多审核者场景的通用写法

如果你的业务后续可能调整为一个实体分配更多审核者,只需要找出存在分歧的实体(不管有多少位审核者),可以用这个更通用的写法:

SELECT entity_name
FROM tasks
GROUP BY entity_name
HAVING COUNT(DISTINCT result) = 2;

只要组内的result有两种不同的值,就说明存在意见不一致的情况,不管有多少位审核者参与。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:43:54