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 的查询?
使用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)