如何在 postgreSQL 中创建 generate_series 函数?
Posted
技术标签:
【中文标题】如何在 postgreSQL 中创建 generate_series 函数?【英文标题】:How to create generate_series function in postgreSQL? 【发布时间】:2020-07-01 11:57:21 【问题描述】:我在互联网上的许多地方看到您可以使用 generate_series 函数(在 postgreSQL 中),如下所示:
select k, percentile_disc(k) within group (order by things.value)
from things, generate_series(0.01, 1, 0.01) as k
group by k
它的工作方式如下:-
generate_series 生成临时表,其值介于起始值和结束值之间,步骤可选。在本例中,generate_series(0.01, 1, 0.01) 返回 0.01, 0.02 等。
但在我的情况下,它显示错误,说它不存在。
QL 错误 [42883]:错误:函数 generate_series(numeric, integer, numeric) 不存在 提示:没有函数匹配给定的名称和参数类型。您可能需要添加显式类型转换。
谁能帮我写下如何明确创建这个函数的代码。
会有很大帮助的!
【问题讨论】:
您使用的是哪个版本的 Postgres?这段代码应该可以工作(我的意思是,当我尝试时它可以工作)。 【参考方案1】:您的代码应该可以工作。但是你可以只使用整数和除法:
select k / 100.0, percentile_disc(k / 100.0) within group (order by things.value)
from things cross join
generate_series(1, 100, 1) as k
group by k
我想指出,即使这段代码也有效:
select generate_series(0.01::numeric, 1::int, 0.01::numeric)
并在 dbfiddle 上测试回到 Postgres 9.5。
【讨论】:
@尼克。 . .大概。口味应该通过在错误消息中标识自己来帮助我们。 不,正确的做法是为 fork 和版本添加标签。以上是关于如何在 postgreSQL 中创建 generate_series 函数?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 postgreSQL 中创建 generate_series 函数?
如何使用 PostgreSQL 在 DBeaver 中创建自动递增/SERIAL id 列?