postgresql function 返回 select

本文介绍如何使用PostgreSQL创建自定义函数来返回表格数据,并提供了一个具体的示例:根据指定数量返回单词频率及其占比。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

pq函数功能很强大,我打算把统计的功能都放在数据库端。优势让运算离数据更近一些,缺点无法服用代码。牺牲了django的灵魂性,项目必须依赖postgresql。

项目中,希望实现返回select内容

后来通过bing.com查询,其实我需要的是返回表格。也是pq中的table,下面是demo

CREATE OR REPLACE FUNCTION word_frequency(_max_tokens int)
  RETURNS TABLE (
   txt            text
  ,abs_cnt        bigint
  ,relative_share numeric
  ) AS
$func$
BEGIN

   RETURN QUERY
   SELECT t.txt
         ,t.cnt
         ,round((t.cnt * 100) / (sum(t.cnt) OVER ()), 2)  -- AS relative_share
   FROM  (
      SELECT t.txt
            ,count(*) AS cnt
      FROM   token t
      WHERE  t.chartype = 'ALPHABETIC'
      GROUP  BY t.txt
      ORDER  BY cnt DESC
      LIMIT  _max_tokens
      ) t
   ORDER  BY t.cnt DESC;

END
$func$  LANGUAGE plpgsql;

上面是参考了http://stackoverflow.com/questions/7945932/how-to-return-result-of-a-select-inside-a-function-in-postgresql/

简单的demo
```
CREATE or REPLACE function getselectdemo()
RETURNS TABLE (
wID NUMERIC
)
as
'
BEGIN

RETURN QUERY
select balance as wID from accounts;

end;' LANGUAGE 'plpgsql';
```

转载于:https://www.cnblogs.com/springday/p/4919003.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值