我一直在 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窗口功能有所了解。