我在SQL中很陌生,我正在尝试创建一个返回表的函数,我的代码是
create or replace function ratios_table (datefrom date)
returns table(
date_of_day date,
counter integer
)
as $$
select
"creationDate",
count("interactionId")
from "UserInteractions"
where "creationDate" >= $1
group by "creationDate"
$$
language SQL;
我得到:
声明要返回记录的函数中的返回类型不匹配
如果我这样在plpgsql中写它(肯定被击中):
create or replace function ratios_table (datefrom date)
returns table(
date_of_day date,
counter integer
)
as $$
begin
select
"creationDate",
count("interactionId")
from "UserInteractions"
where "creationDate" >= $1
group by "creationDate"
return end;
$$
language plpgsql;
我知道
ERROR: syntax error at or near "return"
LINE 14: return end;
非常感谢您的帮助,并为新手提供建议。谢谢!
答案 0 :(得分:0)
counter
值是count()
函数的结果,该函数返回bigint
。
将counter
声明为bigint
,它将起作用。
请注意,完整的错误消息会指出这一点
错误:声明为返回记录的函数中的返回类型不匹配
详细信息:最终语句在列返回bigint而不是整数 2。
上下文:SQL函数“ ratios_table”
我在SQL中很陌生,我正在尝试创建一个返回表的函数,我的代码是
create or replace function ratios_table (datefrom date)
returns table(
date_of_day date,
counter bigint
)
as $$
select
"creationDate",
count("interactionId")
from "UserInteractions"
where "creationDate" >= $1
group by "creationDate"
$$
language SQL;