redshift 选择包含 NULL 的不同行(按列分组)

问题描述 投票:0回答:1

从包含 5 亿条记录的表中获取不同记录的最佳方法是什么?表结构为id1、id2、id3、upload_date。样本数据

id1    id2    id3    upload_date
1       ab    cd     20240525
2       null  gh     20240331
2       null  gh     20240228

需要的结果

id1    id2    id3    upload_date
1      ab     cd     20240525
2      null   gh     20240331

除了 key id1 和 upload_date 之外,所有列都可以为 null。如果我因为 NULL 而使用 max(upload_date) 分组,则会出现重复。如果我对空列使用 nvl,那么我会错过空值,当我使用 select different id1, id2, id3 时,我不会得到所需的 max(upload_date) 。也许 row_numner(按 id1 按 upload_date desc 进行分区)作为 row_id 并从那里获取 row_id = 1 的所有内容?但对于 5 亿条记录来说还好吗?

amazon-web-services amazon-redshift distinct
1个回答
0
投票

如果我正确理解您的要求,一个简单的聚合查询就足够了:

SELECT id1, id2, id3, MAX(upload_date) AS upload_date
FROM yourTable
GROUP BY id1, id2, id3;
© www.soinside.com 2019 - 2024. All rights reserved.