PostgreSQL如何对同表按where条件自连接查询多周统计数据
实现方案
你可以直接对statistic表做自关联查询,将过滤出的37周数据作为关联表匹配到同step_index的基础行即可,参考SQL如下:
SELECT s1.step_index, s1.type, s1.year, s1.week, s1.total_request, s2.week AS week2, s2.total_request AS total_request2 FROM statistic s1 INNER JOIN statistic s2 ON s1.step_index = s2.step_index AND s2.week = 37 -- 仅需要保留38周的基础数据就开启下面的过滤条件,需要展示所有周匹配37周的结果则删除 WHERE s1.week = 38 ORDER BY s1.step_index;
逻辑说明
- 主表
s1取你需要展示的基础数据,示例中是38周的所有行 - 关联表
s2提前过滤出所有周数为37的记录,通过step_index字段和主表做等值关联 - 直接将
s2的week、total_request字段重命名为你需要的week2、total_request2返回即可 - 如果你不需要过滤主表的周数,删除
WHERE s1.week = 38条件即可,所有周的行都会自动匹配对应step_index的37周数据
内容的提问来源于stack exchange,提问作者Rizal Arfiyan
相关产品推荐
相关产品推荐

