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

PostgreSQL中如何为每个案件处理者随机选取4个已完成案件?

为每个案件处理者随机选取4个案件的PostgreSQL实现方案

当然可以实现,不用逐个指定案件处理者,借助PostgreSQL的窗口函数就能一次性完成需求,为每个处理者随机选取最多4个已完成案件。

完整SQL语句

WITH ranked_cases AS (
    SELECT 
        a.case_id, 
        a.case_handler, 
        a.case_status,
        -- 按案件处理者分组,组内随机排序并生成唯一行号
        ROW_NUMBER() OVER (PARTITION BY a.case_handler ORDER BY RANDOM()) AS rn
    FROM casemanagement.cases a
    WHERE 
        a.case_status = 'Completed'
        -- 替换为你的实际日期字段和目标月份,示例为2024年5月
        AND DATE_TRUNC('month', a.case_processed_date) = '2024-05-01'
)
SELECT case_id, case_handler, case_status
FROM ranked_cases
WHERE rn <= 4
ORDER BY case_handler, rn;

逻辑说明

  • 分组与随机排序:通过PARTITION BY a.case_handler将数据按案件处理者分组,每组内用ORDER BY RANDOM()实现随机排序,再用ROW_NUMBER()为每组内的案件生成从1开始的行号。
  • 筛选结果:最后筛选行号rn <= 4的记录,即可得到每个处理者最多4个随机案件;如果某个处理者的已完成案件不足4个,会返回他所有的已完成案件。
  • 月份过滤:语句中保留了指定月份的过滤条件,你需要将case_processed_date替换为表中存储案件处理时间的实际字段,'2024-05-01'替换为目标月份的第一天(比如2024年6月就写'2024-06-01')。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 17:15:07