在 postgres 中恢复上面的值

recover the value above in postgres

我想通过名称恢复上面的值。

参见table。

我希望得到类似于上一栏中的结果 number_week。

谢谢

像这样的东西应该可以工作:

SELECT number_week,
  name,
  LAG(number_week, 1, number_week) OVER (PARTITION BY name ORDER BY number_week) as before_last_number_week
FROM t1;

sqlfiddle version

这利用了 Lag() Window 函数。 "Window" 是一组可以选择性排序的记录。在这里,我们按 Name(所以两个 groups/windows)对记录进行分组,并按 week_number 对它们进行排序。然后使用 Lag() 我们 select 先前记录的 week_number(在 window 中)。 Lag()可以取默​​认值,所以我们指定默认为当前记录的week_number.