SQL Project Planning in SQL | HackerRank Solution

Hello coders, today we are going to solve SQL Project Planning HackerRank Solution in SQL.

SQL Project Planning

Problem

You are given a table, Projects, containing three columns: Task_IDStart_Date and End_Date. It is guaranteed that the difference between the End_Date and the Start_Date is equal to 1 day for each row in the table.

ColumnType
Task_IDInteger
Start_DateDate
End_DateDate

If the End_Date of the tasks are consecutive, then they are part of the same project. Samantha is interested in finding the total number of different projects completed.

Write a query to output the start and end dates of projects listed by the number of days it took to complete the project in ascending order. If there is more than one project that have the same number of completion days, then order by the start date of the project.

Sample Input

Task_IDStart_DateEnd_Date
12015-10-012015-10-02
22015-10-022015-10-03
32015-10-032015-10-04
42015-10-132015-10-14
52015-10-142015-10-15
62015-10-282015-10-29
72015-10-302015-10-31

Sample Output

2015-10-28 2015-10-29
2015-10-30 2015-10-31
2015-10-13 2015-10-15
2015-10-01 2015-10-04

Explanation

The example describes following four projects:

  • Project 1: Tasks 12 and 3 are completed on consecutive days, so these are part of the project. Thus start date of project is 2015-10-01 and end date is 2015-10-04, so it took 3 days to complete the project.
  • Project 2: Tasks 4 and 5 are completed on consecutive days, so these are part of the project. Thus, the start date of project is 2015-10-13 and end date is 2015-10-15, so it took 2 days to complete the project.
  • Project 3: Only task 6 is part of the project. Thus, the start date of project is 2015-10-28 and end date is 2015-10-29, so it took 1 day to complete the project.
  • Project 4: Only task 7 is part of the project. Thus, the start date of project is 2015-10-30 and end date is 2015-10-31, so it took 1 day to complete the project.

Solution – SQL Project Planning in SQL

MySQL

SELECT START_DATE, MIN(END_DATE)
FROM
  (SELECT START_DATE
   FROM PROJECTS
   WHERE START_DATE NOT IN
       (SELECT END_DATE
        FROM PROJECTS)) A,
  (SELECT END_DATE
   FROM PROJECTS
   WHERE END_DATE NOT IN
       (SELECT START_DATE
        FROM PROJECTS)) B
WHERE START_DATE < END_DATE
GROUP BY START_DATE
ORDER BY (MIN(END_DATE) - START_DATE), START_DATE;

Disclaimer: The above Problem (SQL Project Planning) is generated by Hacker Rank but the Solution is Provided by CodingBroz. This tutorial is only for Educational and Learning Purpose.

1 thought on “SQL Project Planning in SQL | HackerRank Solution”

  1. SELECT START_DATE, MIN(END_DATE)
    FROM
    (SELECT START_DATE
    FROM PROJECTS
    WHERE START_DATE NOT IN
    (SELECT END_DATE
    FROM PROJECTS)) A,
    (SELECT END_DATE
    FROM PROJECTS
    WHERE END_DATE NOT IN
    (SELECT START_DATE
    FROM PROJECTS)) B
    WHERE START_DATE < END_DATE
    GROUP BY START_DATE
    ORDER BY datediff(day, min(END_DATE) , START_DATE) desc, START_DATE;

Leave a Comment

Your email address will not be published. Required fields are marked *