簡體   English   中英

PostgreSQL - 我怎么知道在使用窗口函數時我在哪個分區?

[英]PostgreSQL - how do I know which partition I'm in when using window functions?

我一直在使用Windows功能,因為它們對我目前的要求非常有用。 row_number()非常方便讓我知道當前分區的行。 我已閱讀有關窗口功能的文檔並在線搜索,但無法找到我想要的答案。 我希望這里的某個人能說出我想要的是否可能。

我的問題是:是否有可能找到您所在窗口中的哪個分區,方式類似於row_number()告訴您所在分區中的哪一行?

基本上,我想知道這樣的事情,假設窗口中有2個分區,每個分區有2行:

partition 1 row 1
partition 1 row 2
partition 2 row 1
partition 2 row 2

任何想法,任何人?

我們可以嘗試使用DENSE_RANKROW_NUMBER

WITH yourTable AS (
    SELECT 'A' AS col1, 1 AS col2 UNION ALL
    SELECT 'A', 2 UNION ALL
    SELECT 'A', 3 UNION ALL
    SELECT 'B', 1 UNION ALL
    SELECT 'B', 2 UNION ALL
    SELECT 'B', 3
)

SELECT *,
    DENSE_RANK() OVER (ORDER BY col1) partition1,
    ROW_NUMBER() OVER (PARTITION BY col1 ORDER BY col2) partition2
FROM yourTable
ORDER BY
    col1, col2;

在此輸入圖像描述

演示

對於任意數量的分區,此處的一般模式是對前N-1個分區使用DENSE_RANK ,然后在最后一個分區使用ROW_NUMBER ROW_NUMBER將確保最后一個分區具有1,2,3,...作為序列。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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