MySQL-按具有相同列值的连续条目分组

时间:2019-04-17 14:30:50

标签: mysql group-by aggregate

我有一个名为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-1job-id-1有两个条目,因为员工1在该工作上有两个不同的时期(一天是{{1 }}之间。其次,工作的日历日可能会有间隔(例如-周末或假期),但这不应破坏开始和结束日期(在第一期间,job-id-2上的emp-id-1 job-id-1上没有任何工作,但是工作期限仍然从2019-04-022019-04-01

mysql能否执行查询,以具有相同job_id和employee_id(然后可以将其最大/最小日期合并)的连续(有序)条目进行这种分组?还是需要在数据库查询之外完成此操作?

0 个答案:

没有答案