Postgresql - 添加2个随机列

时间:2016-11-17 10:34:59

标签: postgresql

我有一个大型数据集,我想根据开头的一些预定义概率分为训练,验证和测试集(例如,0.8概率,一个元组用于训练,0.1用于验证,0.1用于测试。)

我虽然在添加2个布尔列,训练和验证。两者都依赖于单个随机数。如果现在这个随机数小于0.8,则元组用于训练,如果大于0.9,则用于测试。否则,两列都是false,因此它用于验证。

以下查询存在问题,即所有元组使用相同的随机ID,这意味着根据train / validate / test,所有元组具有相同的值。

update data set 
        test = (sub.rand >= 0.9),
       train = (sub.rand <= 0.8) from (select random() rand) sub;

我想尝试在一个查询中创建它,因为数据集可能非常大,我认为,一个查询比将它分成多个查询要快。 (但是,对此问题的任何解决方案表示赞赏。)

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

尝试

update data set 
    test = random() >= 0.9,
    train = random() <= 0.8;
相关问题