Tôi cảm thấy mình thiếu một điều gì đó hiển nhiên. Tôi đang cố gắng kiểm tra sự phân bố của random()
. Dưới đây là bảng:Phân chia các số nguyên trả về 0
create table test (
id int,
random_float float,
random_int int
);
đây là những gì tôi muốn làm:
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;
Tuy nhiên, "Phần trăm" cột trả về zero cho mỗi bản ghi. Tôi đã cố gắng đúc nó như float, như thập phân, tôi đã cố gắng thay đổi cột random_int
thành thập phân thay vì số nguyên, luôn luôn là kết quả tương tự.
Bất kỳ thông tin chi tiết nào về những gì tôi đang làm sai?
Truyền sang 'số' (hoặc' float', mặc dù tôi thích trước đây) * trước * bạn chia. – vyegorov
Bạn có thể sao chép điều này trong một dòng: 'chọn 1/2'. Trả về 0. – usr
@Phrancis, bạn nên bỏ * trước khi * bạn chia: 'chọn 1/2, 1.0/2, 1.0 * 1/2, 1 :: số/2, truyền (1 làm nổi)/2;' – vyegorov