postgresql - Postgresql 在下一个使用第一行值
问题描述
你好我有这样的表:
A | b | c |
--------------
1 | 0 |
2 | 1 |
3 | 1 |
4 | 2 |
我需要这样的结果:
A | b | c |
--------------
1 | 0 | 0 - 0 + 0 0 b value from first row , 0 - b value
2 | 1 | 1 - 0 + 1 0 b value from first row , 1 - b value
3 | 1 | 1 - 0 + 1 0 b value from first row , 1 - b value
4 | 2 | 2 - 0 + 2 0 b value from first row , 2 - b value
C列是b + b的第一行。我现在关于 LAG 以获得预览值,但总是首先怎么样。如何获得如表所示的结果?
PostgreSQL 10
问候
解决方案
使用FIRST_VALUE()
窗口函数:
SELECT A, b,
b + FIRST_VALUE(b) OVER (ORDER BY A) c
FROM tablename
或者,如果您想更新表格:
UPDATE tablename
SET c = b + (SELECT DISTINCT FIRST_VALUE(b) OVER (ORDER BY A) FROM tablename)
或者:
UPDATE tablename
SET c = b + (SELECT b FROM tablename ORDER BY A LIMIT 1)
请参阅演示。
推荐阅读
- asp.net-mvc - MarkAsNewProduct 过滤器在 nopcommerce 4.2 中不起作用
- html - 为什么这个类在单独的文件中不起作用?
- excel - 随机数列表并找到 5 个相等的块来分配数字 1 - 5
- html - 当父 div 发生溢出时隐藏整个子 div
- ios - 尝试读取视频帧时 AVVideoComposition 失败
- php - 删不掉?之后有什么?用 PHP
- javascript - 在 Object 中查找数组值
- c# - 在 Unity 中播放一系列 360 度视频
- c# - 导出数据时抛出不明原因的 NullReferenceException
- angular - 使用 grecaptcha.reset() 仅重置 recapcha 的第一个实例