当我使用窗口时,如何获得当前分区的大小(行数)?
例如,假设我有一个表格,其中包含博客中帖子的评论。我想知道每个帖子的第一条评论,第二条评论,最后评论和评论数量(没有另一个子查询,我按照帖子分组并做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
应该是什么?
答案 0 :(得分:4)
一旦你意识到你可以在windows中使用它,你的问题就在那里:COUNT(*) OVER wnd AS number_of_comments
将完成这项工作。