如何在PostgreSQL中获取分区(窗口)的大小?

时间:2016-08-28 09:24:49

标签: sql postgresql window-functions

当我使用窗口时,如何获得当前分区的大小(行数)?

例如,假设我有一个表格,其中包含博客中帖子的评论。我想知道每个帖子的第一条评论,第二条评论,最后评论和评论数量(没有另一个子查询,我按照帖子分组并做COUNT(*))。

查询应该类似于:

SELECT DISTINCT
    post_id.
    first_value(comment_text) OVER wnd AS first_comment,
    nth_value(comment_text, 2) OVER wnd AS second_comment,
    last_value(comment_text) OVER wnd AS last_comment,
    SOME_FUNCTION(comment_text) OVER wnd AS number_of_comments
FROM comments
WINDOW wnd AS (
    PARTITION BY post_id
    ORDER BY comment_created_at ASC
    ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING
);

SOME_FUNCTION 应该是什么?

1 个答案:

答案 0 :(得分:4)

一旦你意识到你可以在windows中使用它,你的问题就在那里:COUNT(*) OVER wnd AS number_of_comments将完成这项工作。