我正在从使用 SQL Server 转向使用 Postgresql,但我在指定变量时遇到了问题。
在 SQL Server 中我写了这样的东西,效果很好:
--Compute the probabilities for unique users
declare @users_total decimal(18,2)
select @users_total=count(*) from unique_users_table
select column1, uvs, uvs/@users_totalm as puvs
into probabilities_table
from column_uniquevisits_table
我试图像这样将它翻译成 Postgresql 但出现错误:
--Compute the probabilities for unique users
declare users_total numeric(18,2);
select users_total=count(*)
from unique_users_table
select coumn1, uvs, uvs/users_total as puvs
insert into probabilitiestable
from column_uniquevisits_table
在 Postgresql 中编写我最初在 SQL Server 中的内容的正确方法是什么?
最佳答案
如果要基于选择创建表,请使用create table as select
。
不需要声明(无论如何都不能在 PL/pgSQL 函数之外使用)
create table probabilitiestable
as
select column1,
uvs,
uvs::numeric/(select count(*) from count(*) from unique_users_table) as puvs
from column_uniquevisits_table;
强制转换 ::numeric
是必要的,否则除法将使用整数运算完成,这意味着您不会得到任何小数值。如果 uvs
已经定义为 numeric
(或 decimal
或 float
),那么您就不需要它了。
关于sql - 如何将语法从 SQL Server 转换为 Postgresql?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43472584/