Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.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
Sql 是否有方法以特定的日期频率(例如工作日)查询表?_Sql_Postgresql_Select_Time Series_Weekday - Fatal编程技术网

Sql 是否有方法以特定的日期频率(例如工作日)查询表?

Sql 是否有方法以特定的日期频率(例如工作日)查询表?,sql,postgresql,select,time-series,weekday,Sql,Postgresql,Select,Time Series,Weekday,假设我们有一个SQL表,其中包含不同日期的条目,例如 主表: id(主键) 日期(主键) 周工作日 价值 1. '01-06-2021' 星期二 20 1. '02-06-2021' 结婚 20 1. '04-06-2021' 星期五 20 1. '05-06-2021' 坐 20 1. '07-06-2021' 周一 20 1. '08-06-2021' 星期二 20 Postgres支持generate_series(),这使得这非常简单: select i.id, gs.date, to_

假设我们有一个SQL表,其中包含不同日期的条目,例如

主表

id(主键) 日期(主键) 周工作日 价值 1. '01-06-2021' 星期二 20 1. '02-06-2021' 结婚 20 1. '04-06-2021' 星期五 20 1. '05-06-2021' 坐 20 1. '07-06-2021' 周一 20 1. '08-06-2021' 星期二 20
Postgres支持
generate_series()
,这使得这非常简单:

select i.id, gs.date, to_char(gs.date, 'Dy') as dow, m.value
from (select distinct id from main_table) i cross join
     generate_series('2021-05-30'::date, '2021-06-07'::date, interval '1 day'
                    ) gs(date) left join
     main_table m
     on m.id = i.id and m.date = gs.date
where to_char(gs.date, 'Dy') not in ('Sat', 'Sun');

列日期数据类型?用您正在使用的数据库标记您的问题。@jarlh日期的数据类型为date@Gordon谢谢你的反馈。使用递归cte添加标记以生成日历表。外部连接。