[MSQL]ハッカーランキング(HackerRank)-SQLプロジェクト計画


https://www.hackerrank.com/challenges/sql-projects/problem?isFullScreen=true
質問する

解析
タスクの終了日が連続している場合、タスクは同じプロジェクトの一部です.サマンダは完了したプロジェクトの総数を検索することに興味を持っています.
プロジェクトの完了に要する日数に基づいて、プロジェクトの開始日と終了日を昇順で出力するクエリーを作成します.複数のプロジェクトの完了日数が同じ場合は、プロジェクトの開始日でソートします.
select
    p1.start_date
,   p2.end_date
from
    (
    select
        start_date
    ,   row_number() over (order by start_date) as rn
    from
        projects
    where
        start_date not in (
                          select
                              end_date
                          from
                              projects)
    ) as p1
    join
        (
        select
            end_date
        ,   row_number() over (order by end_date) as rn
        from
            projects
        where
            end_date not in (
                            select
                                start_date
                            from
                                projects)
        ) as p2 on p1.rn = p2.rn
order by
    datediff(day,p1.start_date,p2.end_date)
,   p1.start_date