Sql 是否有方法以特定的日期频率(例如工作日)查询表?
假设我们有一个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_
主表
:
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添加标记以生成日历表。外部连接。