Quick Overview

This question evaluates a data engineer's proficiency in temporal data manipulation and interval-set reasoning using SQL and Python, specifically skills in merging overlapping intervals and computing deduplicated cumulative durations.

Compute unique duration by merging intervals

Company: Nuro

Role: Data Engineer

Category: Data Manipulation (SQL/Python)

Difficulty: easy

Interview Round: Technical Screen

## Problem You have an autonomous-driving clip dataset where each row represents a time interval from a driving run. ### Table: `clips` | column | type | description | |---|---|---| | `set_id` | INT | Session/clip set identifier (e.g., 1–6) | | `run_id` | STRING | Driving run identifier, formatted like `YYYYMMDD_HHMMSS` | | `start_time` | INT | Clip start time offset (e.g., seconds) | | `end_time` | INT | Clip end time offset (e.g., seconds) | | `set_number` | INT | Dataset/source identifier | Assume each interval is **half-open**: `[start_time, end_time)` so duration is `end_time - start_time`. Intervals for the same `run_id` may: - overlap (partially or fully), - be duplicated/redundant, - have gaps (non-contiguous). ## Task Compute, for **each `run_id`**, the **cumulative deduplicated time**: the total duration covered by the **union** of all intervals for that `run_id` (i.e., after merging overlaps). ## Example input For run `20250101_122334`: - set 1: `[58, 70)` - set 2: `[57, 69)` - set 3: `[55, 72)` - set 4: `[56, 71)` - set 5: `[80, 100)` For run `20250102_101010`: - set 6: `[43, 62)` ## Expected output Return a result with: - `run_id` - `cumulative_unique_time` (same unit as the time offsets) Using the example above, results would be: - `20250101_122334` → `39` - `20250102_101010` → `19` ## Requirements 1. Write a **SQL** solution to compute `cumulative_unique_time` per `run_id`. 2. Write a **Python** solution to compute the same metric (given a list/dataframe of intervals).

Overview: This question evaluates a data engineer's proficiency in temporal data manipulation and interval-set reasoning using SQL and Python, specifically skills in merging overlapping intervals and computing deduplicated cumulative durations.

Read the full Nuro Data Engineer interview experience this question came from

你有一个自动驾驶数据片段表,每行是一段时间区间(start_time, end_time),同一个 run_id 下可能有多个区间,区间之间可能重叠或不连续。 请用 SQL 计算每个 run_id 的“累计去重时间”(把该 run_id 下所有区间合并后得到的不重叠总时长)。 计算口径:区间时长按 (end_time - start_time) 计算;合并后的总时长为所有合并区间时长之和。 输出:run_id, cumulative_unique_time。 注意:start_time 和 end_time 是整数(可理解为秒数),并且 end_time > start_time。

Tables

drive_clip_intervals(set_id INT, run_id VARCHAR(32), start_time INT, end_time INT, set_number INT)

Hints

  1. 先按 run_id 分区、按 start_time 排序,判断当前区间是否与前面已覆盖到的最大 end_time 重叠。
  2. 可以用窗口函数计算 running max(end_time),并用“gaps and islands”思路给可合并的区间打组。

Loading coding console...