首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在postgres中选择多个分组后的行

在postgres中选择多个分组后的行
EN

Stack Overflow用户
提问于 2016-06-27 10:28:59
回答 1查看 26关注 0票数 0

postgres DB中有一个表,其结构如下:

代码语言:javascript
复制
id | date | groupme1 | groupme2 | value
---------------------------------------- 
1  |  
2  |  
3  |  

现在,我想达到以下目标:

  1. 在groupme1和groupme2之后对表进行分组
  2. 获取每个组的值
  3. 但每组的最后一项-合成(在日期之后)

示例:

代码语言:javascript
复制
 id | date | groupme1 | groupme2 | value
 ---------------------------------------
    |      |     A    |     1    |   4
    |      |     A    |     2    |   7
    |      |     A    |     3    |   3
    |      |     B    |     1    |   9

我目前的做法如下:

代码语言:javascript
复制
SELECT a.*
FROM table AS a
JOIN (SELECT max(id) AS id
      FROM table
      GROUP BY groupme1, groupme2) AS b
ON a.id = b.id

这种办法的问题是:

  • 更高的日期有更高的id。
  • 要花很长时间

有更快更好的方法吗?窗口功能对此有帮助吗?

EN

回答 1

Stack Overflow用户

发布于 2016-06-27 10:31:42

我想你只是想要窗口功能:

代码语言:javascript
复制
select t.*
from (select t.*,
             row_number() over (partition by groupme1, groupme2 order by date desc) as seqnum
      from t
     ) t
where seqnum = 1;

或者,在Postgres中更好的方法是使用distinct on

代码语言:javascript
复制
select distinct on (groupme1, groupme2) t.*
from t
order by groupme1, groupme2, date desc;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38051613

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档