【发布时间】:2020-01-13 19:38:45
【问题描述】:
我在 PostgreSQL 中有这样的查询:
select count(id_student) students, date_beginning_course from
data.sessions_courses
left join my_schema.students on id_session_course=id_sesion
where course_name='First course'
group by date_beginning_course
我通过此查询获得的是在多个日期参加过“第一门课程”课程的学生人数,例如:
Students Date_beginning_course
____________________________________
5 2019-06-26
1 2019-06-28
5 2019-06-30
6 2019-07-01
2 2019-07-02
我想用缺失的日期值填充此表,并且对于每个缺失的值,在学生列中分配一个“0”,因为该日期没有学生。示例:
Students Date_beginning_course
____________________________________
5 2019-06-26
0 2019-06-27 <--new row
1 2019-06-28
0 2019-06-29 <--new row
5 2019-06-30
6 2019-07-01
2 2019-07-02
你能帮帮我吗?谢谢! :)
【问题讨论】:
-
使用
calendar table(可能是generate-series())并离开它。 -
确实如此。根据@wildplassers answer 加入使用
generate_series()创建日期范围的子查询 -
我尝试使用 generate_series 查询没有成功,我认为我做的不正确。
标签: sql postgresql left-join gaps-and-islands date-arithmetic