我在greenplum中获取了一个数据集(运行postgresql sql语法)并且需要添加一个日期类型值的列(对于SAS,但我们不能使用SAS数据步骤),其中包含三个日期:20170101,20170601,20171101和这些值中的每一个都是所有行的1/3。
答案 0 :(得分: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()
可以保证三个日期之间的均衡(尽管给定行数尽可能接近)。