作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想从下表中找到按 fname 和 lname 分组的新代码和以前的代码。
fname | lname | code |
----------------------
jack | jonas | 987 |
nick | fun | 563 |
jack | jonas | 674 |
jack | jonas | 672 |
输出表:
fname | lname | new_code | prev_code |
-------------------------------------
jack | jonas | 987 | 674
PS:我的案例不支持“distinct on”。我想可以使用 left join 或 pivot。
最佳答案
在 Postgres 中,您可以使用 distinct on
和 lag()
获取每个名称的最新对:
select distinct on (lname, fname) t.*
from (select t.*,
lag(code) over (partition by lname, fname order by datecol) as prev_code
from t
) t
where prev_code is not null
order by lname, fname, date desc;
你也可以在没有子查询的情况下这样做:
select distinct lname, fname,
first_value(code) over (partition by lname, fname order by datecol desc),
nth_value(code, 2) over (partition by lname, fname order by datecol desc)
from t;
但是,当第二个代码存在时,您仍然需要一个子查询来过滤值。
或者,您可以使用数组:
select lname, fname,
(array_agg(code order by datecol desc))[1] as code,
(array_agg(code order by datecol desc))[2] as prev_code
from t
group by lname, fname
having count(*) >= 2;
关于sql - 如何查找按两列分组的列的先前值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56833283/
我的应用将 SceneKit 内容的“页面”与图像和文本交替。当我从图像页面前进到新的 SceneKit 页面时,前一个 SceneKit 页面中的内容会短暂显示,然后被新内容替换。时髦。 我只使用一
我正在尝试处理(在 C# 中)包含一些数字数据的大型数据文件。给定一个整数数组,如何对其进行拆分/分组,以便如果下一个 n(两个或更多)是负数,则前一个 n 元素被分组。例如,在下面的数组中,应该使用
刚接触promises,研究过。所以我的代码和我的理解: sql.connect(config).then(function(connection) { return connection.req
目前我在 if (roobaf) block 中有一些代码,这取决于 foo 和 bar 是否为假。我可以在 block 内再次检查这些条件,但感觉像是不必要的代码重复。 if (foo) {
我是一名优秀的程序员,十分优秀!