[MSQL]ハッカーランキング(HackerRank)-チャレンジ


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

解析
Juliaは学生たちにコード問題をするように頼んだ.クエリーを作成してhacker id、名前、および学生ごとに作成された合計チャレンジ回数を出力します.結果を降順で合計チャレンジ数でソートします.複数の学生が同じ数の問題を作成した場合は、hacker idに基づいて結果をソートします.2人以上の学生が同じ数のタスクを作成し、生成された最大タスク数より少ない数のタスクを作成した場合は、結果から除外します.
with
    data
as
    (
    select
        h.hacker_id as id
    ,   h.name as name
    ,   count(h.hacker_id) as counter
    from
        hackers as h
        join challenges as c on h.hacker_id = c.hacker_id
    group by
        h.hacker_id
    ,   h.name
    )
select
    id
,   name
,   counter
from
    data
where
    counter = (
              select
                  max(counter)
              from
                  data
              )
    or
    counter in (
               select
                   counter
               from
                   data
               group by
                   counter
               having
                   count(counter) = 1
               )
order by
    counter desc
,   id