簡體   English   中英

何時以及如何使用 PostgreSQL 中的 Window 函數?

[英]When and how to use Window Functions in PostgreSQL?

我一直在學習 PostgreSQL 中的 Window 函數(例如OVERRANKPARTITION 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM