栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在 Postgres 中为每个用户选择每第 N 行

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在 Postgres 中为每个用户选择每第 N 行

假设这

("dateId", "userId")
是唯一的并且新行总是有一个更大的(稍后)
dateId

一些评论后:

认为你需要的是:

SELECt "dateId", "userId", "Salary"FROM (   SELECt "dateId", "userId", "Salary"         ,(row_number() OVER (PARTITION BY "userId"   -- either this        ORDER BY "dateId")) % 2 AS rn   FROM   user_table   WHERe  "userId" = 789        -- ... or that   ) subWHERe  sub.rn = 1AND    "Salary" > 0;

请注意

PARTITION BY
. 通过这种方式,您可以
dateId
为每个跳过每一秒
userId
,并且到目前为止,附加的(稍后的)行不会更改选择。

此外,只要您为单个

userId
(
WHERe "userId" = 789
)选择行,将谓词拉入子查询,即可达到相同的效果(单个用户的稳定选择)。你不需要两者。

WHERe
子查询中的条款仅适用于单个用户,
PARTITION BY
在一个查询适用于任何数量的用户。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/407488.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号