postgresql:how 添加一列并平均插入具有三个相同值的行
postgresql:how to add a column and insert rows with three same values equally
我在 greenplum 中得到一个数据集(它运行 postgresql sql 语法)并且需要添加一个日期类型值的列(对于 SAS,但是我们不能使用 SAS 数据步骤) 具有三个 date:20170101,20170601,20171101 并且这些值中的每一个都具有所有行的 1/3。
这是一种随机分配值的方法:
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()
可以保证三个日期之间的平衡(根据行数尽可能接近)。
我在 greenplum 中得到一个数据集(它运行 postgresql sql 语法)并且需要添加一个日期类型值的列(对于 SAS,但是我们不能使用 SAS 数据步骤) 具有三个 date:20170101,20170601,20171101 并且这些值中的每一个都具有所有行的 1/3。
这是一种随机分配值的方法:
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()
可以保证三个日期之间的平衡(根据行数尽可能接近)。