从均匀分布在列的不同值上的SQL表中选择random
我有一个表格,里面有人口统计信息。为简洁起见,假设其中一列AGE可以有五个值16、17、18、19、20中的一个 我想要一个SQL查询,它会给我100个随机选择,这些随机选择来自于平均分布在不同年龄段的用户,所以我会得到大约或正好20个年龄=16的条目,20个年龄=17的条目,依此类推 我将在某一点上需要在多个栏中进行分配,例如,结果在年龄、种族和收入之间的分布是均匀的,但至少需要从知道如何在一个栏中均匀分布开始从均匀分布在列的不同值上的SQL表中选择random,sql,database,postgresql,Sql,Database,Postgresql,我有一个表格,里面有人口统计信息。为简洁起见,假设其中一列AGE可以有五个值16、17、18、19、20中的一个 我想要一个SQL查询,它会给我100个随机选择,这些随机选择来自于平均分布在不同年龄段的用户,所以我会得到大约或正好20个年龄=16的条目,20个年龄=17的条目,依此类推 我将在某一点上需要在多个栏中进行分配,例如,结果在年龄、种族和收入之间的分布是均匀的,但至少需要从知道如何在一个栏中均匀分布开始 (SELECT * FROM users WHERE age = 16 ORDER
(SELECT * FROM users WHERE age = 16 ORDER BY random() LIMIT 20)
UNION ALL
(SELECT * FROM users WHERE age = 17 ORDER BY random() LIMIT 20)
UNION ALL
...
所有括号都是必需的
大型表可能的性能优化取决于设置和需求的确切细节
相关的:
看看这个
with first_random as
(
SELECT * FROM users where age = '16' OFFSET floor(random()) LIMIT 20
)
, second_random as
(
SELECT * FROM users where age = '17' OFFSET floor(random()) LIMIT 20
)
, third_random as
(
SELECT * FROM users where age = '18' OFFSET floor(random()) LIMIT 20
), fourth_random as
(
SELECT * FROM users where age = '19' OFFSET floor(random()) LIMIT 20
)
, Fifth_random as
(
SELECT * FROM users where age = '20' OFFSET floor(random()) LIMIT 20
)
select * from first_random
union
select * from second_random
union
select * from third_random
union
select * from fourth_random
union
select * from fifth_random
同时检查实况演示您可以标记您的dbms吗?