這是一個類型的問題。表達式
count(*)
結果類型bigint
。表達式
(select count(*) from extractsummary)
也導致類型bigint
。與某些編程語言(例如R)不同,PostgreSQL中的除法操作符不會自動將整數操作數提升爲小數類型。所以你必須自己施放它。
select
retpre04recency,
count(*) as CustomerCount,
(select count(*) from extractsummary) as Total,
round(count(*)::numeric/(select count(*) from extractsummary),2) as CustomerCount
from
extractsummary
group by
retpre04recency
order by
retpre04recency asc
;
例子:
drop table if exists extractsummary;
create table extractsummary (retpre04recency int);
insert into extractsummary (retpre04recency) values (1), (1), (2), (2), (2), (3), (3), (3), (3), (4), (4), (4), (5), (5), (5), (5), (5), (6), (6), (6), (99);
select
retpre04recency,
count(*) as CustomerCount,
(select count(*) from extractsummary) as Total,
round(count(*)::numeric/(select count(*) from extractsummary),2) as CustomerCount
from
extractsummary
group by
retpre04recency
order by
retpre04recency asc
;
謝謝!作品! 也是這樣做的最有效的方法?我的意思是嵌套查詢總數 –