- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
有什么方法可以强制 PostgreSQL LAG()
和 LEAD()
函数使用的值不是来自前导行,而是同一分区的下一个等级?
---------------------------------------------------
| client_id | order_id | product_id | year | rank |
---------------------------------------------------
| 1 | 1 | 111345 | 1995 | 1 |
| 1 | 1 | 912346 | 1995 | 1 |
| 1 | 1 | 212346 | 1995 | 1 |
| 1 | 2 | 233368 | 1998 | 4 |
| 1 | 2 | 133368 | 1998 | 4 |
| 1 | 3 | 412341 | 2005 | 6 |
| 2 | 55 | 312344 | 1995 | 1 |
| 2 | 57 | 812343 | 1999 | 2 |
---------------------------------------------------
预期的结果是:
---------------------------------------------------------------------------
| client_id | order_id | product_id | year | rank | prev_year | next_year |
---------------------------------------------------------------------------
| 1 | 1 | 111345 | 1995 | 1 | null | 1998 |
| 1 | 1 | 912346 | 1995 | 1 | null | 1998 |
| 1 | 1 | 212346 | 1995 | 1 | null | 1998 |
| 1 | 2 | 233368 | 1998 | 4 | 1995 | 2005 |
| 1 | 2 | 133368 | 1998 | 4 | 1995 | 2005 |
| 1 | 3 | 412341 | 2005 | 6 | 1998 | null |
| 2 | 55 | 312344 | 1995 | 1 | null | 1999 |
| 2 | 57 | 812343 | 1999 | 2 | 1995 | null |
---------------------------------------------------------------------------
如果 year
在给定排名中有 distinct 值,则 prev_year
和 next_year
可以是这些值中的任何一个。例如:
---------------------------------------------------------------------------
| client_id | order_id | product_id | year | rank | prev_year | next_year |
---------------------------------------------------------------------------
| 1 | 1 | 111345 | 1994 | 1 | null | 1998 |
| 1 | 1 | 912346 | 1995 | 1 | null | 1998 |
| 1 | 1 | 212346 | 1996 | 1 | null | 1998 |
| 1 | 2 | 233368 | 1998 | 4 | ???? | null |
????
可以等于 1994、1995 或 1996
最佳答案
您应该在数据集上使用 lag()
和 lead()
函数,每对 (client_id, rank)
减少到一行:
select
client_id, order_id, product_id,
t.year, rank, prev_year, next_year
from my_table t
join (
select distinct on (client_id, rank)
client_id, rank, year,
lag(year) over w as prev_year,
lead(year) over w as next_year
from my_table
window w as (partition by client_id order by rank)
order by 1, 2, 3 desc
) s using (client_id, rank)
order by client_id, rank
client_id | order_id | product_id | year | rank | prev_year | next_year
-----------+----------+------------+------+------+-----------+-----------
1 | 1 | 212346 | 1995 | 1 | | 1998
1 | 1 | 912346 | 1995 | 1 | | 1998
1 | 1 | 111345 | 1995 | 1 | | 1998
1 | 2 | 133368 | 1998 | 4 | 1995 | 2005
1 | 2 | 233368 | 1998 | 4 | 1995 | 2005
1 | 3 | 412341 | 2005 | 6 | 1998 |
2 | 55 | 312344 | 1995 | 1 | | 1999
2 | 57 | 812343 | 1999 | 2 | 1995 |
(8 rows)
关于sql - 下一级别的 LAG()/LEAD() (Postgresql),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49534822/
在 Dynamics CRM 中,潜在客户实体同时具有状态和状态原因。使用 API 我可以获得所有状态原因。我被绊倒的地方是当我的用户选择状态原因时我想倒退并找出哪个状态与所选状态原因相关联。 以下是
我已经搜索了几个小时,但仍然找不到正确的答案。这可能看起来很简单,但我需要你的帮助,这是问题:有两个按钮,1.) 递增按钮和 2.) 递减(减)按钮,当我单击按钮 1 时,值 $a 得到 +1 当我单
我有一个带有3个kafka节点和3个zk节点的kakfa集群。 生产者在AWS机器上尝试将数据推送到我的Intranet服务器上运行的kafka集群上。 使用以下命令从控制台创建主题(JOB_AWS_
我知道之前已经有人问过如何用前导空格分割字符串的问题,例如: String str = " I want to be split \t!" String[] sarr = str.split("\\
我正在尝试使用 xlsx 将 Excel 2010 工作簿文件中的工作表读入 R和 XLConnect包。尽管将工作表中的单元格格式化为“文本”,但两者都在邮政编码列上删除了前导零。 wb <- lo
在 AudioUnit 插件中,我使用 NSFont。 NSFontManager* fontManager = [NSFontManager sharedFontManager]; NSFont*
我有一个简单的触发器,可以在创建或更新潜在客户时从潜在客户对象中提取数据并将其放入自定义“财务”对象中。由于某种原因,Trigger.new[i].Id 在插入之前触发的触发器中返回 NULL。 我快
当 lead() 值不在当前行的范围内时,我在查询时遇到问题,范围边缘的行返回 null lead() 值。 假设我有一个简单的表来跟踪连续的计数器 create table anytable ( w
考虑一下, 浅蓝色 strip 的宽度(比方说)为 10。 红色 block 通过leading measure链接到浅蓝色 strip 。 假设该约束的常量为零。当然,红色 block 的 x 位置
如何从后续版本号字符串中删除“前导”零? 5.002.008.80911 --> 5.2.8.80911 谢谢。 最佳答案 使用 str.split 和 str.join 例如: s = "5.002
我正在尝试查询 View ,但收到“ORA-01873:间隔的前导精度太小”错误消息。下面是查询。 Select * from table order by Col1. 下面是 View 结构: Co
突然(但不幸的是,我不知道“突然”是什么时候;我知道它在过去的某个时候运行良好)我的一个查询开始需要 7 秒以上而不是毫秒来执行。我有 1 个本地表和 3 个通过数据库链接访问的表。 3 个远程表连接
假设我的表结构是这样的 我计划按(USER 和 SEQUENCE)对其进行分组并获取下一个序列的 LEAD 时间戳。这是我正在寻找的输出 如果可能的话,我可以在不使用 LEAD 函数的 JOIN 的情
当我在 ConstrainedBox 中放置 ListTile 的前导时,我遇到了图像大小问题,图像太小,无法填充到更大的尺寸,有什么想法可以使此图像大小可以跟随 Card 的高度吗? 谢谢你。 Li
我有一个 Spring MVC Web 应用程序,应该提供静态资源。因此我有以下 Spring 配置: 但是对资源的每个请求都会导致同样丑陋的 ClassCastException: java.la
void X() { lock(&m); while(x || y) wait( &farpar, &m); x ++; unlock(&m); // Do X stuff loc
我不知道该怎么做。我的数据结构如下: DATE: Amount ID 3/5/2018 0
表和架构设置 考虑下表和触发器, CREATE TABLE t1 ( c1 int, c2 text, c3 text, m1 int, m2 int, primary key
有什么方法可以强制 PostgreSQL LAG() 和 LEAD() 函数使用的值不是来自前导行,而是同一分区的下一个等级? ------------------------------------
我正在使用 Python 的 argparse解析命令行参数的模块。考虑以下简化示例, # File test.py import argparse parser = argparse.Argumen
我是一名优秀的程序员,十分优秀!