[문제]
[MySQL]
WITH step1 AS (
SELECT ROW_NUMBER() OVER (ORDER BY Start_Date) AS id
, LAG(End_Date, 1) OVER (ORDER BY Start_Date) AS last_end
, Start_Date
, End_Date
, LEAD(Start_Date, 1) OVER (ORDER BY Start_Date) AS next_start
FROM Projects)
, step2 AS (
SELECT id
, CASE WHEN last_end != Start_Date THEN id
WHEN last_end IS NULL THEN id
ELSE LAG(id, 1) OVER (ORDER BY id)
END AS project
, Start_Date
, End_Date
FROM step1
WHERE last_end IS NULL
OR next_start IS NULL
OR last_end != Start_Date
OR End_Date != next_start)
SELECT MIN(Start_Date) AS start_date
, MAX(End_Date) AS end_date
FROM step2
GROUP BY project
ORDER BY DATEDIFF(MAX(End_Date), MIN(Start_Date)) ASC, Start_Date ASC
'SQL > HackerRank' 카테고리의 다른 글
| [HackerRank] Symmetric Pairs (0) | 2025.03.08 |
|---|---|
| [HackerRank] Placements (0) | 2025.03.08 |
| [HackerRank] Contest Leaderboard (0) | 2025.03.08 |
| [HackerRank] Challenges (0) | 2025.03.08 |
| [HackerRank] Ollivander's Inventory (0) | 2025.03.08 |
