[英]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_RANK
和ROW_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.