【问题标题】:extract value from array on condition根据条件从数组中提取值
【发布时间】:2021-11-28 13:24:10
【问题描述】:

您好,我有一张这样的桌子:

+-----------------+------------------+
|           id    |  dates           | 
+------------------------------------+
|  1              |{2010,2011,2018}  |                    
|  2              |      2000        |                       
+------------------------------------+

如果有日期

对于这种情况,它应该返回 id 1 : 2011 和 id 2 : null

编辑这是解决方案:

case when (select max (x) FROM unnest(ARRAY[c.dates]) as x)< 2015 then (select max (x) FROM unnest(ARRAY[c.dates]) as x)
        else null end as "15com",

【问题讨论】:

  • 请详细说明您正在处理的数据类型、示例输入和预期输出
  • 数据类型为年份转换为 int 。我需要提取 2015 年之前的最后一年活动,如果数组中没有更小的值,则返回 null
  • 如果 2015 > any{2000,2010,,2017} 那么会怎样?
  • 2010(应该取最接近的值)
  • “数组”到底是什么意思?为什么你的问题涉及“数组”这个词?是不是你想要最大的年份小于 2015 年,如果没有找到 2020 年?还是有些年份很特别?如果有,它们有何特别之处?

标签: sql arrays postgresql


【解决方案1】:
select case when array[2015] > array[2000,2017] then 2000 end 

【讨论】:

    猜你喜欢
    • 2017-02-12
    • 2012-07-23
    • 1970-01-01
    • 2019-12-21
    • 1970-01-01
    • 2019-04-15
    • 1970-01-01
    • 1970-01-01
    • 2018-09-25
    相关资源
    最近更新 更多