जब आप order by
. जोड़ते हैं विंडो फ़ंक्शन के रूप में उपयोग किए जाने वाले समुच्चय के लिए जो कुल मिलाकर "रनिंग काउंट" (या जो भी कुल आप उपयोग करते हैं) में बदल जाता है।
count(*)
निर्दिष्ट क्रम के आधार पर "वर्तमान एक" तक पंक्तियों की संख्या वापस कर देगा।
निम्न क्वेरी order by
. के साथ उपयोग किए गए समुच्चय के लिए अलग-अलग परिणाम दिखाती है . sum()
के साथ इसके बजाय count()
यह देखना थोड़ा आसान है (मेरी राय में)।
with test (id, num, x) as (
values
(1, 4, 1),
(2, 4, 1),
(3, 5, 2),
(4, 6, 2)
)
select id,
num,
x,
count(*) over () as total_rows,
count(*) over (order by id) as rows_upto,
count(*) over (partition by x order by id) as rows_per_x,
sum(num) over (partition by x) as total_for_x,
sum(num) over (order by id) as sum_upto,
sum(num) over (partition by x order by id) as sum_for_x_upto
from test;
इसका परिणाम होगा:
id | num | x | total_rows | rows_upto | rows_per_x | total_for_x | sum_upto | sum_for_x_upto
---+-----+---+------------+-----------+------------+-------------+----------+---------------
1 | 4 | 1 | 4 | 1 | 1 | 8 | 4 | 4
2 | 4 | 1 | 4 | 2 | 2 | 8 | 8 | 8
3 | 5 | 2 | 4 | 3 | 1 | 11 | 13 | 5
4 | 6 | 2 | 4 | 4 | 2 | 11 | 19 | 11
पोस्टग्रेज मैनुअल में और भी उदाहरण हैं।