我在redshift中有一个表,该表有一个名为ID的列,其中包含数百万个不同的条目。但是,每个ID可以跨行重复。我的表的一个示例是:
ID | 颜色 | 年龄 | 高度 |
---|---|---|---|
一种 | 蓝色 | 12 | 24 |
一种 | 红色的 | 3 | 34 |
乙 | 绿色的。 | 6 | 26 |
乙 | 蓝色 | 8 | 22 |
C | 白色的 | 6 | 34 |
我想选择一个预设数量-例如100,000个不同的ID,以及与这些ID匹配的所有行。因此,如果随机选择ID“ A”,我将获得ID中具有“ A”的所有行(2)。
有关如何执行此操作的任何建议?
您可以join
在子查询中使用并选择适当的ID:
select t.*
from t join
(select id
from t
group by id
order by random()
limit 1000000
) t1000000
on t1000000.id = t.id;
您可能会发现它更快,从而避免了排序。例如,如果您想要1%的ID样本,则:
select t.*
from t join
(select id
from t
group by id
having random() < 0.01
) t1000000
on t1000000.id = t.id
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句