【发布时间】:2014-10-23 20:45:45
【问题描述】:
我觉得我错过了一些明显的东西。我正在尝试测试random() 的分布。这是表格:
create table test (
id int,
random_float float,
random_int int
);
这是我想做的:
truncate table test;
insert into test (id)
values (generate_series(1,1000));
update test
set
random_float = random() * 10 + 1;
update test
set
random_int = trunc(random_float);
select
random_int,
count(random_int) as Count,
cast( count(random_int) / max(id) as float) as Percent
from test
group by random_int
order by random_int;
但是,“百分比”列会为每条记录返回零。我尝试将其转换为浮点数,作为十进制,我尝试将random_int 列更改为十进制而不是整数,结果始终相同。
任何关于我做错了什么的见解?
【问题讨论】:
-
投到
numeric(或float,虽然我更喜欢前者)在你分裂之前。 -
您可以在一行中重现此内容:
select 1/2。返回 0。 -
@Phrancis,你应该在 之前进行转换:
select 1/2, 1.0/2, 1.0*1/2, 1::numeric/2, cast(1 as float)/2;
标签: sql postgresql division