sql – 在Postgres中查询的高效时间序列
发布时间:2021-05-07 05:12:36 所属栏目:MsSql教程 来源:网络整理
导读:我的PG数据库中有一个表,看起来有点像这样: id | widget_id | for_date | score | 每个引用的小部件都有很多这些项目.每个小部件每天总是1个,但是存在差距. 我想得到的结果是包含自X以来每个日期的所有小部件.日期通过生成系列引入: SELECT date.date::d
我的PG数据库中有一个表,看起来有点像这样: id | widget_id | for_date | score | 每个引用的小部件都有很多这些项目.每个小部件每天总是1个,但是存在差距. 我想得到的结果是包含自X以来每个日期的所有小部件.日期通过生成系列引入: SELECT date.date::date FROM generate_series('2012-01-01'::timestamp with time zone,'now'::text::date::timestamp with time zone,'1 day') date(date) ORDER BY date.date DESC; 如果没有给定widget_id的日期条目,我想使用前一个.所以说小工具1337在2012-05-10没有条目,但在2012-05-08,那么我希望结果集在2012-05-10也显示2012-05-08条目: Actual data: widget_id | for_date | score 1312 | 2012-05-07 | 20 1337 | 2012-05-07 | 12 1337 | 2012-05-08 | 41 1337 | 2012-05-11 | 500 Desired output based on generate series: widget_id | for_date | score 1336 | 2012-05-07 | 20 1337 | 2012-05-07 | 12 1336 | 2012-05-08 | 20 1337 | 2012-05-08 | 41 1336 | 2012-05-09 | 20 1337 | 2012-05-09 | 41 1336 | 2012-05-10 | 20 1337 | 2012-05-10 | 41 1336 | 2012-05-11 | 20 1337 | 2012-05-11 | 500 最终我想把它归结为一个视图,所以我每天都有一致的数据集,我可以轻松查询. 编辑:使样本数据和预期结果集更清晰 解决方法SQL Fiddleselect widget_id,for_date,case when score is not null then score else first_value(score) over (partition by widget_id,c order by for_date) end score from ( select a.widget_id,a.for_date,s.score,count(score) over(partition by a.widget_id order by a.for_date) c from ( select widget_id,g.d::date for_date from ( select distinct widget_id from score ) s cross join generate_series( (select min(for_date) from score),(select max(for_date) from score),'1 day' ) g(d) ) a left join score s on a.widget_id = s.widget_id and a.for_date = s.for_date ) s order by widget_id,for_date (编辑:宿迁站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- sqlserver分页有哪些办法,你知道几个?
- sql-server – 在Sql Server中,有没有办法检查选定的一组行
- sql-server – 这个NO JOIN PREDICATE警告我应该感到警惕吗
- mssql中得到指定日期所在月份的第一天的代码
- sql-server – 恢复数据库,不包括FILESTREAM数据
- 如何选择和排序不在Groupy中的列按SQL语句 – Oracle
- sql-server – 根据Sql Server中的选定行生成插入脚本?
- sql – 如何在Rails中创建“即将到来的生日”模块?
- SQL Server数据库中如何创建表的相关约束?
- sql server 2012 FileTable有什么功能?
站长推荐
热点阅读