我有一个名为employee_jobs
的mysql表,看起来像这样:
id (uuid) | job_id (uuid) | employee_id (uuid) | date (date)
----------|---------------|--------------------|------------
id-1 | job-id-1 | emp-id-1 | 2019-04-01
id-2 | job-id-1 | emp-id-1 | 2019-04-03
id-3 | job-id-2 | emp-id-1 | 2019-04-04
id-4 | job-id-1 | emp-id-1 | 2019-04-05
id-5 | job-id-3 | emp-id-2 | 2019-04-01
我已经建立了一个查询以获取数据,并首先按employee_id
,然后按date
进行排序(如上所示)。我想要得到的是员工的工作周期列表,因此对于上面的示例,我会得到类似的信息:
employee_id (uuid) | job_id (uuid) | start_date(date) | end_date (date)
-------------------|---------------|------------------|----------------
emp-id-1 | job-id-1 | 2019-04-01 | 2019-04-03
emp-id-1 | job-id-2 | 2019-04-04 | 2019-04-04
emp-id-1 | job-id-1 | 2019-04-05 | 2019-04-05
emp-id-2 | job-id-3 | 2019-04-01 | 2019-04-01
有两点需要注意:1:emp-id-1
和job-id-1
有两个条目,因为员工1在该工作上有两个不同的时期(一天是{{1 }}之间。其次,工作的日历日可能会有间隔(例如-周末或假期),但这不应破坏开始和结束日期(在第一期间,job-id-2
上的emp-id-1
job-id-1
上没有任何工作,但是工作期限仍然从2019-04-02
到2019-04-01
。
mysql能否执行查询,以具有相同job_id和employee_id(然后可以将其最大/最小日期合并)的连续(有序)条目进行这种分组?还是需要在数据库查询之外完成此操作?