sql - 每个用户仅选择 3 行 - SQL 查询

标签 sql postgresql

这些是我的表格中的列

id (autogenerated)
created_user
created_date
post_text

这个表有很多值。我想获取每个 created_user

的最新 3 篇帖子

我是 SQL 新手,需要帮助。我在 Postgres 数据库中运行了以下查询,但它没有帮助

SELECT * FROM posts WHERE created_date IN
(SELECT MAX(created_date) FROM posts GROUP BY created_date)

最佳答案

您可以使用row_number() window function为每个用户创建有序行数。之后您可以轻松地按此值进行过滤

demo:db<>fiddle

    SELECT
        *
    FROM (
        SELECT
            *,
            row_number() OVER (PARTITION BY created_user ORDER BY created_date DESC)
        FROM
            posts
    ) s
    WHERE row_number <= 3
  • PARTITION BY对用户进行分组
  • ORDER BY date DESC 将每个用户的帖子按降序排列,以获取最新的 row_count == 1,...

关于sql - 每个用户仅选择 3 行 - SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57926133/

相关文章:

sql - 具有变更历史的数据库设计

sql - 部署期间添加辅助数据库数据

sql - 利用 Rails ahoy 和 groupdate gems 计算每日活跃用户的最有效方法是什么?

php - mysql查询问题,如何显示值

mysql - 将 sql 查询结果直接转换为图表的 X 轴和 Y 轴的最佳方法是什么

sql - 如何使用Go在postgres中将等于(=)更改为不等于(<>)

php - PDO 语句错误 : 42601 syntax error near "$6"

sql - 如何更改查询结果中具有特定值的行的位置

MySQL查询逻辑辅助

mysql - 查找具有 0 或 1 个子树的子树中的所有节点