1

我一直在 PostgreSQL 中学习窗口函数(例如 , OVER,子句) RANKPARTITION BY但仍然对何时以及如何使用它们以及结果输出意味着什么感到困惑?

有人对它们有一些总结性的解释吗?

示例:OVER()RANK()

4

1 回答 1

1

我可以给你一个简单的例子,你可以在其中使用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窗口功能有所了解。

于 2021-01-25T04:06:34.293 回答