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

如何按条件从数组中提取值:查找小于2015的最近日期

SQL需求实现方案

你当前写的代码存在逻辑偏差,而且对同一行数据执行了两次unnest查询,性能开销更高。你可以直接通过一次子查询完成需求,写法更简洁:

(SELECT MAX(x) FROM unnest(c.dates) AS x WHERE x < 2015) AS "15com"

逻辑说明

  • 先用unnest(c.dates)把dates列的数组拆分为单个元素
  • 加WHERE x < 2015过滤出所有小于2015的日期
  • 用MAX(x)取过滤结果的最大值,也就是最接近2015的数值,如果没有符合条件的元素,MAX函数会自动返回null,完全匹配你的需求,不需要额外写CASE WHEN判断。

结果验证

按照你给出的示例数据:

  • id=1的行dates数组过滤后剩下2010、2011,取最大值返回2011,符合预期
  • id=2的行dates值为2000,符合小于2015的条件,会返回2000。如果你实际期望这一行返回null,大概率是示例中的dates值填写错误,调整WHERE过滤条件即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 16:06:03