如何在 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 函数?的主要内容,如果未能解决你的问题,请参考以下文章

sql 如何在PostgreSQL中创建只读用户

如何在 PostgreSQL 中创建临时函数?

如何在 postgreSQL 中创建 generate_series 函数?

如何使用 PostgreSQL 在 DBeaver 中创建自动递增/SERIAL id 列?

如何在 postgresql 中创建包含 dblink 的 MVIEW

如何使用 Play 框架中的演变在 PostgreSQL 中创建函数?