小编STH*_*STH的帖子

在SQL中执行pivot-table-ish JOIN

我的雇主有一个批处理计算集群,用于处理用户提交的作业.每个批处理作业包括三个步骤:

  1. 工作开始了
  2. 工作完成了
  3. 结果报告给用户

批处理作业管理软件在每个步骤发生时记录,日志文件由一个元组组成,该元组具有提交作业的员工的ID代码,发生的步骤以及发生时间的时间戳.在CSV中,它看起来像:

ID  step    timestamp
--  ------  ---------
A   start   3533
B   start   3538
B   finish  3549
C   start   3551
A   finish  3557
B   report  3559
C   finish  3602
A   report  3603
B   start   3611
C   report  3623
B   finish  3643
B   report  3657
Run Code Online (Sandbox Code Playgroud)

等等.

数据集的另一个特点是员工之间存在共识,但员工之间并不相同; 也就是说,每个员工必须等到他们当前的工作在下一个工作开始前报告.因此,当我按日期排序并将结果限制为单个员工时,记录总是以"开始","完成","报告"的顺序出现.

我想创建一个数据透视表,将每个作业分组到一行.所以上面的数据变成:

employee-ID  started  finished  reported
-----------  -------  --------  --------
A            3533     3557      3603
B            3538     3549      3559
B            3611     3643      3657
C            3551     3602      3623
Run Code Online (Sandbox Code Playgroud)

那么,对于SQL:

SELECT
    log.ID AS employee-ID, …
Run Code Online (Sandbox Code Playgroud)

sql join subquery left-join

5
推荐指数
1
解决办法
1499
查看次数

标签 统计

join ×1

left-join ×1

sql ×1

subquery ×1