[英]When and how to use Window Functions in PostgreSQL?
我一直在學習 PostgreSQL 中的 Window 函數(例如OVER
、 RANK
、 PARTITION BY
子句),但仍然對何時以及如何使用它們以及結果輸出意味着什么感到困惑?
有人對它們有一些總結性的解釋嗎?
示例: OVER()
和RANK()
我可以給你一個簡單的例子,你可以使用rank
。
假設您有student_marks
表,並且每個 class 都有一個測試。 (第 1 類,class 2,.. 用單個表中每個學生的分數進行測試,為簡單起見,所有數據都在一個表中考慮)
如果您現在想將每個 class 的結果提供給學生(最高分產生第一個數字,依此類推),那么您可以使用rank
如下:
Rank() over (partition by class order by marks desc) -- student_rank_in_class
這里,
Partition by class
- 表示應按 class 給出排名。
Order by marks desc
排序 - 表示在每個 class 中,最高分的學生 ( marks desc
) 應獲得第一名,然后第二高的學生應獲得第二名,依此類推。
希望,這個解釋會讓你對rank
window function 有一些了解。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.