Я чувствую, что мне не хватает чего-то очевидного. Я пытаюсь проверить распределение random()
. Вот таблица:Отдел целых чисел 0
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;
Однако в столбце «Процент» возвращает ноль для каждой записи. Я попытался использовать его как float, как десятичный, я попытался изменить столбец random_int
на десятичный, а не на целое, всегда на тот же результат.
Любое понимание относительно того, что я делаю неправильно?
Вставить в 'числовые' (или' float', хотя я предпочитаю первый) * до * вы делите. – vyegorov
Вы можете воспроизвести это в одной строке: 'select 1/2'. Возвращает 0. – usr
@Phrancis, вы должны использовать * перед *, вы делите: 'select 1/2, 1.0/2, 1.0 * 1/2, 1 :: numeric/2, cast (1 as float)/2;' – vyegorov