Redshift 选择随机记录但避免重复

AKS*_*OTE 3 sql amazon-web-services amazon-redshift

我在 Redshift 中有一个表,其中包含样本 ID 71082 的以下记录:

id       trm_num        start_time
71082   PCMAMGA759551   2012-05-02 09:41:54
71082   PCMAMGA759551   2015-06-02 13:23:39
71082   PCMAMGA759551   2015-09-03 13:23:39
71082   PCMAMGA759551   2015-12-11 07:25:25
71082   PCMAMGA759551   2017-01-10 09:03:22
Run Code Online (Sandbox Code Playgroud)

我只想为每个 id 选择 1 个随机记录。为此,我尝试了查询:

select * from mytable where id=71082 order by random limit 1;
Run Code Online (Sandbox Code Playgroud)

它为我获取了随机记录。但是该表有 1000 个不同的 ID。如何修改我对其他 ID 的查询?

Tho*_*ner 5

使用ROW_NUMBER每个 ID 随机顺序的窗口函数:

select id, trm_num, start_time
from
(
  select
    id, trm_num, start_time,
    row_number() over (partition by id order by random()) as rn
  from mytable
) numbered
where rn = 1;
Run Code Online (Sandbox Code Playgroud)