Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
根据PostgreSQL中的条件删除数组中的元素_Sql_Postgresql - Fatal编程技术网

根据PostgreSQL中的条件删除数组中的元素

根据PostgreSQL中的条件删除数组中的元素,sql,postgresql,Sql,Postgresql,使用版本12 我有一个返回日期数组的查询。我试图获取一个查询,该查询返回数组,但删除第一个和最后一个日期以及任何星期二或星期四的日期 下面是它的样子: 从my_表中选择my_日期 因此,我要查找的查询应在第一行返回以下内容: {'2019-11-02','2019-11-03','2019-11-04','2019-11-06','2019-11-08','2019-11-09','2019-11-10','2019-11-11','2019-11-13','2019-11-15','2019-

使用版本12

我有一个返回日期数组的查询。我试图获取一个查询,该查询返回数组,但删除第一个和最后一个日期以及任何星期二或星期四的日期

下面是它的样子:

从my_表中选择my_日期 因此,我要查找的查询应在第一行返回以下内容:

{'2019-11-02','2019-11-03','2019-11-04','2019-11-06','2019-11-08','2019-11-09','2019-11-10','2019-11-11','2019-11-13','2019-11-15','2019-11-16','2019-11-17'}
其中删除了以下日期元素:

“2019-11-01”-第一个要素 “2019-11-18”-最后一个要素 “2019-11-05”-星期二 “2019-11-07”-周四 2019-11-12——周二 “2019-11-14”-周四
你是一个不安的人,重新聚集。日期似乎是有序的,因此:

select (select array_agg(dte order by dte)
        from (select dte, min(dte) over () as min_dte,
                     max(dte) over () as max_dte
              from unnest(my_dates) dte
             ) dte
        where dte not in (min_dte, max_dte) and
              extract(dow from dte) not in (2, 4)
       ) as new_my_dates
from my_table;
注意:如果日期没有排序,并且确实希望删除第一个和最后一个元素,那么可以使用unnest with ordinality

select (select array_agg(dte order by dte)
        from (select dte, min(dte) over () as min_dte,
                     max(dte) over () as max_dte
              from unnest(my_dates) dte
             ) dte
        where dte not in (min_dte, max_dte) and
              extract(dow from dte) not in (2, 4)
       ) as new_my_dates
from my_table;