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
看起來你必須去工會 –