postgresql:如何添加列并同等地插入具有三个相同值的行

问题描述 投票:0回答:1

我在greenplum中获取了一个数据集(运行postgresql sql语法)并且需要添加一个日期类型值的列(对于SAS,但我们不能使用SAS数据步骤),其中包含三个日期:20170101,20170601,20171101以及其中每个所有行的1/3的值。

sql postgresql sas greenplum
1个回答
0
投票

以下是一种随机分配值的方法:

select (case row_number() over (order by random()) % 3
            when 0 then '2017-01-01'::date
            when 1 then '2017-06-01'::date
            when 2 then '2017-11-01'::date
        end) as dte
from t;

注意:简单地运行会更快:

select (case (random() * 3)::int
            when 0 then '2017-01-01'::date
            when 1 then '2017-06-01'::date
            when 2 then '2017-11-01'::date
        end) as dte
from t;

但是,使用row_number()可以保证三个日期之间的平衡(尽可能在给定行数的情况下尽可能接近)。

© www.soinside.com 2019 - 2024. All rights reserved.