本关任务:编写函数来实现获取前N名成绩的方法。 提示:前面的实验没有提供编写自定义函数的示例,需要参考OpenGauss数据库文档学习自定义函数的使用。
score
表内容如下:
Id Score 1 3.52 2 3.65 3 4.23 4 3.85 5 4.23 6 3.65
--#请在BEGIN - END之间添加实现代码, 其余代码不能改动
create TYPE ret as(rank bigint, SCORE float);
create or replace
function select_topN(topN INT)
RETURNS SETOF ret
AS $$
BEGIN
RETURN QUERY
WITH ranked_scores AS(SELECT score, DENSE_RANK() OVER(ORDER BY score DESC) as rank FROM score
)
SELECT rank, score
FROM ranked_scores
WHERE rank <= topN
ORDER BY rank, score DESC;END;
$$
language PLpgsql;