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

PostgreSQL:如何获取多Job下均衡分布的指定状态任务?

解决方案

可以使用PostgreSQL的窗口函数ROW_NUMBER()实现按job分组取指定条数的需求,具体SQL语句如下:

SELECT job, task, status
FROM (
    SELECT 
        job, 
        task, 
        status,
        ROW_NUMBER() OVER (PARTITION BY job ORDER BY task) AS rn
    FROM your_table_name
    WHERE status = 's1' AND job IN ('j1', 'j2', 'j3')
) AS sub
WHERE rn <= 2
ORDER BY job, rn;

语句说明:

  • 内层子查询:通过PARTITION BY job将数据按job分组,ROW_NUMBER()为每个分组内的记录生成序号,ORDER BY task用于确定分组内记录的排序规则(可根据实际需求替换为创建时间等其他字段)。
  • 外层查询:筛选每个分组内序号≤2的记录,确保每个job返回2条数据。
  • 最后的ORDER BY job, rn让结果按job分组展示,每组内记录按序号排序,满足均衡展示的要求。

若某job的s1状态记录不足2条,该语句会返回该job下所有符合条件的记录,最终总条数会少于6条。如果需要严格返回6条(允许某job不足时用其他job补充),可调整逻辑,但上述语句已满足各job均衡返回2条的核心需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 15:33:09