PostgreSQL 函数使用记录

这篇博客介绍了如何在PostgreSQL中创建一个函数来统计课程的合格率。该函数利用setof返回满足条件(成绩大于60)的学生人数,并通过聚合函数计算合格率。在处理过程中,需要注意避免参数名与数据库表字段名冲突,以及结果的四舍五入。函数返回的结果是一个包含课程代码和合格率的文本集合。

数据导入

通过函数统计课程的合格率

-- setof 返回一个结果集
-- setof 某表/某视图 返回类型 
-- 如果某个参数报 column reference "year" is ambiguous ,表示参数与数据库表字段一样,引起歧义,换个名字
create or replace function fun_name(args) returns setof text
as $$
BEGIN
    return query 
    -- 由于返回值类型为text, 可以使用concat, 或者concat_ws使用某个字符连接
    -- round 保留小数点多少为,cast 强转为numeric
    -- 统计课程的合格率,通过sum() 获取满足某个及格条件的人数
    select concat_ws(' ',sub.code, round(
            cast ( 
                sum(case when grade > 60 
                then 1.0 else 0.0 end) /count(*)
                as numeric) 
            ,4)
        )
    FROM
        -- 表的连接
    where
    	-- 条件
    group by
    	-- an

END;
$$ language plpgsql;
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值