Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从均匀分布在列的不同值上的SQL表中选择random_Sql_Database_Postgresql - Fatal编程技术网

从均匀分布在列的不同值上的SQL表中选择random

从均匀分布在列的不同值上的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

我有一个表格,里面有人口统计信息。为简洁起见,假设其中一列AGE可以有五个值16、17、18、19、20中的一个

我想要一个SQL查询,它会给我100个随机选择,这些随机选择来自于平均分布在不同年龄段的用户,所以我会得到大约或正好20个年龄=16的条目,20个年龄=17的条目,依此类推

我将在某一点上需要在多个栏中进行分配,例如,结果在年龄、种族和收入之间的分布是均匀的,但至少需要从知道如何在一个栏中均匀分布开始

(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吗?