繁体   English   中英

限制查询结果

[英]Limit query results

我有一个应用程序,其中包含音乐排行榜,以展示热门曲目(显示前十名)。

但是,我试图限制图表,以便任何特定用户不能同时在顶部图表上拥有多个轨道。

如果您需要更多信息,请告诉我。

您可以使用row_number()函数提供一个运行编号,该编号在用户ID更改时会重置。 然后可以在WHERE子句中使用它来创建每个用户限制:

SELECT * FROM (
    SELECT COALESCE(sum(plays.clicks), 0),
        row_number() OVER (PARTITION BY users.id ORDER BY COALESCE(sum(plays.clicks), 0) DESC),
        users.id AS user_id,
        tracks.*
        FROM tracks
            JOIN plays
            ON tracks.id = plays.track_id
            AND plays.created_at > now() - interval '14 days'
            INNER JOIN albums
            ON tracks.album_id = albums.id
            INNER JOIN users
            ON albums.user_id = users.id
            GROUP BY users.id, tracks.id
            ORDER BY 1 desc) sq1
    WHERE row_number <= 2 LIMIT 10;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM