从特定点开始每个 SQL 记录

Posted

技术标签:

【中文标题】从特定点开始每个 SQL 记录【英文标题】:Starting each SQL record from a specific point 【发布时间】:2021-08-09 12:26:04 【问题描述】:

我想弄清楚如何从 SQL 中的特定点开始每条记录。我创建了一个数据集来尝试表示我想要的。

这是起始数据集。

但是,我想获得一个新的观点,有一个明确的起点。

所以每个成员记录从 ID 33 开始,按成员和日期排序。基本上想要 ID 33 之后的每条记录及其对应的日期。

【问题讨论】:

你的意思是... where ID>=33 添加图片作为数据不是一个好主意。请添加您的示例数据和预期结果。 @StephanBauer 我刚刚修改了照片。 ID 并不总是逐渐变大。我想选择 ID = 33 的行及其对应的日期。然后是每个成员在该日期之后的所有内容。抱歉,我应该更清楚地说明这一点 【参考方案1】:

如果你的 id 是有序的,你可以使用:

select t.*
from t
where id >= 33
order by member, date;

如果 id 不按顺序排列,一种方法是关联子查询:

select t.*
from t
where date >= (select min(t2.date) from t t2 where t2.member = t.member and t2.id = 33);

最后,一个windows函数方法是:

select t.*
from (select t.*,
             min(case when id = 33 then date end) over (partition by member) as date_33
      from t
     ) t
where date >= date_33;

【讨论】:

我刚刚修改了原始问题,因为我想要 ID=33 中的日期以及每个成员在该日期之后的所有行 @MWong 。 . .这就是除了第一个答案之外的所有内容。

以上是关于从特定点开始每个 SQL 记录的主要内容,如果未能解决你的问题,请参考以下文章

存储视频观看记录明细___面向动作的编程思想

如何从特定点开始自动递增?

如何获取数据列表,特定日期仅从每个日期获取 6 条记录而不是更多

操作日期,新的一天从特定时间开始 SQL

Python:从每个新行从特定列表索引开始的列表创建数据框

使用 SQL 获取表中每个用户最近 n 天的活动 [关闭]