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

被折叠的 条评论
为什么被折叠?



