【发布时间】:2013-06-03 00:29:03
【问题描述】:
我正在尝试在用户定义的函数中将数值变量调用/转换为字符串。我在考虑使用to_char,但没有通过。
我的功能是这样的:
create or replace function ntile_loop(x numeric)
returns setof numeric as
$$
select
max("billed") as _____(to_char($1,'99')||"%"???) from
(select "billed", "id","cm",ntile(100)
over (partition by "id","cm" order by "billed")
as "percentile" from "table_all") where "percentile"=$1
group by "id","cm","percentile";
$$
language sql;
我的目的是定义一个新变量“x%”作为它的名称,其中 x 变化作为函数输入。在上下文中,x 是数字,稍后将在函数中作为数字再次调用(这部分代码未包含在上面的示例中)。
我要返回的内容:
我只是想返回一段代码,这样每次我更改百分位数时,我就不必一次又一次地运行这段代码。我想计算 5, 10, 20, 30, ....90th 百分位数,并将每个 id+cm 组的所有这些都显示在同一张表中。
这就是为什么我在考虑宏或函数,但没有找到我喜欢的任何解决方案。
感谢您的回答。是的,我一定会在学习的同时阅读基础知识。今天是我使用 SQL 的第二天,但必须立即生成一些结果。
【问题讨论】:
-
发布完整功能...
-
I also know that returns setof numeric is not correct, but have no idea what else I could use.我们也不知道你想要返回什么。样本输出怎么样?而it didn't pass不是有效的 Postgres 错误消息。你真正得到了什么? -
_____和???在那里做什么?它们实际上是你的代码的一部分,还是你想告诉我们一些关于它的事情? -
也相关:您的 PostgreSQL 版本 ...
-
了解SQL的第一件事是“考虑宏或函数”应该是你最后的手段。您的第一种方法应该始终是建立一个单一的查询来提供您需要的结果。 DBMS 可能比您在研究如何循环或以其他方式查询数据方面做得更好。
标签: sql postgresql types user-defined-functions plpgsql