一尘不染

MySQL Group按连续值

sql

我有rate_history表,其中包含每个雇员的数据及其在工作岗位上的比率变化。我想在单个查询中获取每个员工的职位变动。所选作业是连续行中具有最新更新的作业。请注意,随着时间的推移,可以将相同的工作职位重新分配给员工。

id job_id updated
1    1    01-01-2015
2    1    01-02-2015
3    2    01-01-2015
4    2    01-03-2015
5    2    01-02-2015
6    1    01-01-2015

结果应该是:

id job_id updated
1    1    01-01-2015
3    2    01-01-2015
6    1    01-02-2015

阅读 132

收藏
2021-05-16

共1个答案

一尘不染

好的,这是我对您提供的输出的理解基础上的小提琴链接,

您可以使用行号(不适用于mysql,但使用环形交叉路口),然后获取具有job_ids与以前的记录不同的记录。

小提琴链接

select t1.id
     , t1.job_id
     , t1.updatedate
     , t2.rn as rnt2
  from temprwithrn as t1
  left 
  join temprwithrn as t2
    on t1.rn = t2.rn + 1
 where t1.job_id <> t2.job_id or t2.job_id is null
2021-05-16