Redshift中的ROW_NUMBER()从每个组中选择最大的行?
Posted
技术标签:
【中文标题】Redshift中的ROW_NUMBER()从每个组中选择最大的行?【英文标题】:ROW_NUMBER() in Redshift to select biggest row from each group? 【发布时间】:2013-11-14 09:53:48 【问题描述】:我需要根据COUNT(1)
字段从每个组中选择一行。
在其他数据库中,我会使用 ROW_NUMBER() 函数,在 redshift 中是 unsupported yet。
【问题讨论】:
Redshift 现在支持ROW_NUMBER Window Function 【参考方案1】:答案是使用这样的SUM(1) OVER(PARTITION BY group_field ORDER BY order field ROWS UNBOUNDED PRECEDING)
构造:
SELECT id,
name,
cnt
FROM
(SELECT id,
name,
count(*) cnt,
sum(1) over (partition BY id ORDER BY cnt DESC ROWS UNBOUNDED PRECEDING) AS row_number
FROM table
GROUP BY id,
name)
WHERE row_number = 1
ORDER BY name
【讨论】:
以上是关于Redshift中的ROW_NUMBER()从每个组中选择最大的行?的主要内容,如果未能解决你的问题,请参考以下文章
SQL (RedShift):从时间戳列中为每个月选择不同的日期