到目前为止,我有一个问题,有时候round会在某些条目中随机生成null,有没有一种方法可以编辑代码,使其必须生成数组中的5个值之一?沿着此之外,任何人都可以编辑这段代码,其中日期只显示年值为整数,忽略月和日?
with populate_cup_matches as (
insert into cup_matches
select generate_series(1,624680,1) as mid,
('{final,semi-final,quarter-final,16,32}'::text[])[random()*5] as round,
'epoch'::date+'1 year'::interval*floor(random()*53) as year,
floor(random()*1000000)::int as num_ratings,
random()*10 as rating
returning *
)
这是一个额外的好处,但是有没有一种方法可以在整个表中随机生成'salah',直到22218才在一行中生成,并且可能使名称值显示为合法的名称而不是一些代码。谢谢你
insert into public.played_in
select mid,
case when mid<=22218
then 'salah'||(gen_random_uuid()::varchar(25))
else gen_random_uuid()::varchar(30)
end as name,
year,
random()*11 as position
from populate_cup_matches limit 135960
returning *;
我试着做了一些解决方案,但我对编码很陌生,所以如果我看起来像是在问一些琐碎的问题,我道歉。
1条答案
按热度按时间dxpyg8gm1#
我相信你可以通过使用
floor(random()*5)+1
来修复“round”列中的NULL,因为你不能为索引0获取文本数组值。关于名字,尝试https://mockaroo.com/或http://randat.com/来获得一个名字列表,然后从中获得结果。”(《礼记·礼记·礼记》))我不能保证特定数量的行会有这个字符串,但下面是一个基于除以3(大约1/3)行后的余数的建议-“也许”。
| 中|圆的|num_ratings|姓名|年|
| - -----|- -----|- -----|- -----|- -----|
| 2|四分之一决赛|九三一五三|阿里安娜·萨拉赫|一九九七年|
| 3|三十二|九七八零四|阿诺德·纳尔逊|2012年|
| 3|三十二|九七八零四|迈克尔·霍姆斯|2012年|
| 5个|三十二|630775|卡洛斯·克拉克|二零零八年|
| 六|半决赛|424009|马库斯·巴雷特|一九八二年|
| 六|半决赛|424009|朱利安·霍金斯|一九八二年|
| 七个|十六|二一二一五|伊迪丝·罗杰斯|一九九八年|
| 八|最后|494013|亚伯拉罕·萨拉赫|一九七七年|
| 十个|十六|二六六〇六四|克里斯蒂安·萨拉赫|一九七八年|
| 十一|半决赛|七三九七一一|克里斯蒂安·理查兹|2021年|
| 十三|最后|三九五五八○|阿诺德·萨拉赫|一九七八年|
| 十四|四分之一决赛|516702|迈克尔·萨拉赫|二千年|
| 十六|半决赛|150100|阿诺德·纳尔逊|一九九六年|
| 十八岁|三十二|五四八七○二|迈克尔·霍姆斯|一九七一年|
| 十九|十六|332677|弗雷迪·凯西|一九九二年|
| 二十个|四分之一决赛|10274|阿里安娜·吉布森|一九八三年|
fiddle
nb如果你只想要“year”作为列,那么从生成的日期中“提取”年份-但请注意,该列现在是整数而不是日期!