[SQL] Contest Leaderboard(hackerrank)


問題を解く
  • グループbyとサブクエリを使用します.
  • 大会では、ユーザが複数のテストで提出した最高点数の合計.
  • に条件(0以上しか出力しない)を追加する必要があるので、もっと難しいです.
  • /*
    Enter your query here.
    */
    select hacker_id, name, sum(score) as total_score
    from(
        select s.hacker_id,h.name, challenge_id,  max(score) as score 
        from submissions s inner join hackers h on h.hacker_id=s.hacker_id  
        group by hacker_id,h.name, challenge_id
        )
    as t
    group by hacker_id, name
    having total_score>0
    order by total_score desc, hacker_id asc;

    覚えておきたい🧐

  • groupbyを複数回使用する必要がある場合は、select~fromセクション全体を1つのテーブルに配置し、mysqlでatのように名前を付けてエラーを回避する必要があります.
  • groupbyと書く場合、where節を同時に書くことは不可能です.もう一度クエリーで囲み、haveでいいと気づき、また修正しました.