我一直在 PostgreSQL 中学习窗口函数(例如 , OVER
,子句) RANK
,PARTITION BY
但仍然对何时以及如何使用它们以及结果输出意味着什么感到困惑?
有人对它们有一些总结性的解释吗?
我一直在 PostgreSQL 中学习窗口函数(例如 , OVER
,子句) RANK
,PARTITION BY
但仍然对何时以及如何使用它们以及结果输出意味着什么感到困惑?
有人对它们有一些总结性的解释吗?
我可以给你一个简单的例子,你可以在其中使用rank
.
假设您有student_marks
一张桌子,并且每个班级都有一个测试。(第 1 类,第 2 类,.. 用单个表中每个学生的分数进行测试,为简单起见,所有数据都在一个表中考虑)
如果您现在想将每个班级的结果提供给学生(最高分产生第一个数字,依此类推),那么您可以使用rank
如下:
Rank() over (partition by class order by marks desc) -- student_rank_in_class
这里,
Partition by class
- 表示每个班级应该给出排名。
Order by marks desc
- 表示在每个班级中,得分最高的学生(marks desc
)应获得第一名,然后第二高的学生应获得第二名,依此类推。
希望,这个解释会让你对rank
窗口功能有所了解。