首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PARTITION BY with DISTINCT

PARTITION BY with DISTINCT
EN

Stack Overflow用户
提问于 2020-02-02 10:19:11
回答 2查看 75关注 0票数 0

我有以下数据。我想在ID上分区,并且只返回基于Date描述的唯一OrgIDs

对于ID 14,根据Date在输出中选择EncompassPremier。对于ID 57,选择EncompassExamplePremier是因为Example属于独特的OrgID类别。

代码语言:javascript
复制
ID  Num  Dx   Code   Describe   OrgID   Nm1     Name        Type         Date
14  242  438  26994  Fractures  4534    2332    ENCOMPASS   AGENCY       2020-01-01
14  242  438  26994  Fractures  4533    2332    Premier     Hospital     2020-02-01
14  242  438  26994  Fractures  4533    2332    Premier     Hospital     2019-08-08
14  242  438  26994  Fractures  4534    2332    ENCOMPASS   AGENCY       2019-07-09
14  242  438  26994  Fractures  4534    2332    ENCOMPASS   AGENCY       2019-08-07
57  242  438  22699  Nervous    4533    2332    Premier     Hospital     2018-01-12
57  242  438  22699  Nervous    4534    2332    ENCOMPASS   AGENCY       2020-01-09
57  242  438  22699  Nervous    4533    2332    Premier     Hospital     2020-01-01
57  242  438  22699  Nervous    4535    2332    Example     Nurse        2019-11-11
57  242  438  22699  Nervous    4534    2332    ENCOMPASS   AGENCY       2019-06-30

预期输出-

代码语言:javascript
复制
ID  Num  Dx   Code   Describe   OrgID   Nm1     Name        Type         Date
14  242  438  26994  Fractures  4534    2332    ENCOMPASS   AGENCY       2020-01-01
14  242  438  26994  Fractures  4533    2332    Premier     Hospital     2020-02-01
57  242  438  22699  Nervous    4533    2332    Premier     Hospital     2020-01-01
57  242  438  22699  Nervous    4534    2332    ENCOMPASS   AGENCY       2020-01-09
57  242  438  22699  Nervous    4535    2332    Example     Nurse        2019-11-11
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-02-02 10:30:46

似乎您可以使用row_number()来获取每个idorgid对的最新版本。

代码语言:javascript
复制
SELECT x.id,
       x.num,
       ...
       x.date
       FROM (SELECT t.id,
                    t.num,
                    ...
                    t.date,
                    row_number() OVER (PARTITION BY t.id,
                                                    t.orgid
                                       ORDER BY t.date DESC) rn
                    FROM elbat t) x
       WHERE x.rn = 1;
票数 1
EN

Stack Overflow用户

发布于 2020-02-02 22:54:58

在Postgres中,我推荐DISTINCT ON

代码语言:javascript
复制
select distinct on (id, orgid) t.*
from t
order by id, orgid, date desc;

这通常比使用窗口函数或子查询的相应查询快。并在(id, orgid, date desc)上建立索引,速度相当快。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60022746

复制
相关文章

相似问题

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