爲了訓練機器學習模型,我必須檢索由平衡數量的當前用戶和以前用戶組成的用戶樣本。 Tha數據庫由表all_users和former_users組成。如何從兩個表中選擇平衡的隨機樣本記錄?
不平衡樣品的情況下(100條記錄),下面的查詢與所需的列返回的記錄:
SELECT t1.user_property1, t2.user_property2, t3.valid_to FROM additional_info t1 LEFT JOIN all_users t2 ON t1.user_ID = t2.user_ID LEFT JOIN former_users t3 ON t1.user_ID = t3.user_ID ORDER BY random() LIMIT 100
爲了獲得均衡的樣品,應該有一半的記錄與用戶被存儲在表以前的用戶和一半的表all_users,而這些用戶在同一時間不在表前用戶(否則樣本不會被平衡)。
有誰知道,從表additional_info的附加屬性沿表all_users和former_users從表all_users和former_users檢索平衡隨機樣本的最方便的方法是什麼?
謝謝!你可能會考慮做
在這種情況下,您應該使用UNION ALL而不是UNION。後者增加了一個額外的步驟來刪除重複,這是沒有必要的。 –
沒有非前用戶表。其實我想知道是否有一種'否定連接'的方法。 –
你剛發佈的解決方案是我會做的(只是沒有模式來實際創建sql)。我唯一能想到的其他事情就是做一個外連接,並檢查第三個表中的字段是否爲空,而不是否爲NOT。無論哪種方式,它可能沒有太大的不同,我想不出一個更簡單的解決方案。 – jcern