postgresql partition large dataset and random select 3 来自一个类别
postgresql partition large dataset and random select 3 from a category
就数据库编程或一般编程而言,我是新手。
但我希望你能帮助我。
我有一个大约有 900 万行的数据库,并且有一个名为类别的列。有些行属于同一类别,可能有 10 个属于同一类别,而其他行可能只有 1 或 2 个。
我想制作一个新的 table,其中从同一类别中随机选择三行。其余基本过滤或排除。
如果类别少于 3 行,则只会选择可用的行。
我在论坛上四处张望,一个朋友告诉我我需要用 PARTITION 来做这件事。我尝试了以下方法,但这并没有达到我想要的效果。非常感谢任何帮助。
Create table test as
SELECT *
FROM (
SELECT *, row_number() OVER (PARTITION BY category ORDER BY random()) as rn
FROM data2016 ) sub
WHERE rn = 1;
可能:
SELECT *
FROM (
SELECT *, row_number() OVER (PARTITION BY category ORDER BY random()) as rn
FROM data2016
) sub
WHERE rn <= 3;
就数据库编程或一般编程而言,我是新手。 但我希望你能帮助我。
我有一个大约有 900 万行的数据库,并且有一个名为类别的列。有些行属于同一类别,可能有 10 个属于同一类别,而其他行可能只有 1 或 2 个。
我想制作一个新的 table,其中从同一类别中随机选择三行。其余基本过滤或排除。
如果类别少于 3 行,则只会选择可用的行。
我在论坛上四处张望,一个朋友告诉我我需要用 PARTITION 来做这件事。我尝试了以下方法,但这并没有达到我想要的效果。非常感谢任何帮助。
Create table test as
SELECT *
FROM (
SELECT *, row_number() OVER (PARTITION BY category ORDER BY random()) as rn
FROM data2016 ) sub
WHERE rn = 1;
可能:
SELECT *
FROM (
SELECT *, row_number() OVER (PARTITION BY category ORDER BY random()) as rn
FROM data2016
) sub
WHERE rn <= 3;