2
我有一些用户的信息,性别,出生日期,“类别”的表格,等如何采取随机抽样的MySQL数据库与多个条件
我需要采取随机抽样,但有以下结果:25-35
40%年龄为36-40之间
10%年龄之间41-60
75%女性
25%男性
50%年龄
总计2000
记录。
有没有办法直接在MySQL中做到这一点?
我有一些用户的信息,性别,出生日期,“类别”的表格,等如何采取随机抽样的MySQL数据库与多个条件
我需要采取随机抽样,但有以下结果:25-35
40%年龄为36-40之间
10%年龄之间41-60
75%女性
25%男性
50%年龄
总计2000
记录。
有没有办法直接在MySQL中做到这一点?
对于每个sql查询,您不能使用联合声明中的顺序或限制。它们可以在最后使用。
所以它更好地使用存储过程的输出。
CREATE PROCEDURE USER_DATA_RAND()
BEGIN
CREATE TEMPORARY TABLE USER_TMP
ID INT,
DATE_OF_BIRTH DATE,
CATEGORY STRING,
AGE INT)
INSERT INTO USER_TMP
select sex, date_of_birth, `category`,age from users where age between 25 and 35 and sex = 'male' order by rand() limit 2000*0.5*0.25) ;
INSERT INTO USER_TMP
select sex, date_of_birth, `category`,age from users where age between 25 and 35 and sex = 'female' order by rand() limit 2000*0.5*0.75) ;
INSERT INTO USER_TMP
select sex, date_of_birth, `category`,age from users where age between 36 and 40 and sex = 'male' order by rand() limit 2000*0.40*0.25) ;
INSERT INTO USER_TMP
select sex, date_of_birth, `category`,age from users where age between 36 and 40 and sex = 'female' order by rand() limit 2000*0.40*0.75) ;
INSERT INTO USER_TMP
select sex, date_of_birth, `category`,age from users where age between 41 and 60 and sex = 'male' order by rand() limit 2000*0.10*0.25) ;
INSERT INTO USER_TMP
select sex, date_of_birth, `category`,age from users where age between 41 and 60 and sex = 'female' order by rand() limit 2000*0.10*0.75) ;
SELECT * FROM USER_TMP;
END
没什么......我不知道......我的意思..我可以做一个随机选择限制到2000年的记录,有一些基本的规则,但我怎么能确保年龄的50%之间25-35有一些女人和一些男人? – user2572393
你实际上不能保证“25-35岁之间的50%有一些女性和一些男性”,因为这不会是一个真正的随机样本。这将是有选择的。例如如果我把每一个第三人记录在一条线上,他们可能都是男人,但是那里有女人。 你可能会更好地把它作为一个部分,如下所示: 750名25-35岁的男性; 250名女性25-35岁;等 – TomDunning
看起来你必须去工会 –