在Postgresql中限制GROUP BY

时间:2015-05-12 09:41:36

标签: sql postgresql

我需要一个查询,将我的曲目分组为创建日期(月),然后限制每组最多10个结果。

我正试着这样做:

SELECT  "tracks".* 
FROM (SELECT ROW_NUMBER() OVER (order by tracks.votes_count DESC) AS r,
      t.*
      from tracks t
      where 1=1 ) x
where x.r <= 10

但它给了我关于from子句的错误:

  

错误:缺少表“轨道”

的FROM子句条目

我做错了什么?应该如何正确查询?

2 个答案:

答案 0 :(得分:2)

x别名被曝光。因此,您需要将tracks别名更改为x

SELECT  x.* 
FROM (SELECT ROW_NUMBER() OVER (order by tracks.votes_count DESC) AS r,
    t.*
    from tracks t
    where 1=1 ) x
where x.r <= 10

答案 1 :(得分:1)

为什么不简单:

SELECT *
FROM tracks
ORDER BY votes_count DESC NULLS LAST
LIMIT 10;