ブログ

シリーズ

HackerRank の SQL

記事 11 本MySQLHackerRankSQL Server2026/10/06 更新

HackerRank の SQL 問題を実際のテーブルで解いて解説。各クエリに、どの句がどの行を通すかを示す図がついています。 SELECT と WHEREからProject Planning:ウィンドウ関数と CTEまで。

記事

  1. SELECT と WHERECITY テーブルで始める最初のクエリ:列の選択、WHERE による絞り込みと条件の連結、そして COUNT・SUM・AVG による最初の集計。
  2. CITY と COUNTRY の JOINキーで 2 つのテーブルを結合する:CITY と COUNTRY の INNER JOIN。どの行が残り、どの行が落ちるかをインタラクティブな図で確かめます。
  3. STATION:名前とパターン(1)STATION テーブルの最初の問題:DISTINCT、件数、そして SUBSTRING・LEFT・RIGHT を使って都市名を最初または最後の母音で絞り込む。
  4. STATION:名前とパターン(2)STATION の第 2 弾:NOT IN による否定、各名前の最初と最後の文字に対する条件の組み合わせ、そして LAT_N の合計・切り捨て・最大値と最小値。
  5. STATION:幾何と中央値STATION の最後の 3 問。クエリは絞り込みから数学へ:マンハッタン距離、ユークリッド距離、そして中央値。
  6. STUDENTS と EMPLOYEE複合ソート、CASE を使った集計、給与の計算:STUDENTS・GRADES・EMPLOYEE テーブルの問題。
  7. 三角形と素数パターンの問題:SQL Server のループで三角形を描き、素数を 1 行に並べる(SQL をほとんど命令型言語として使う)、そして CASE WHEN で三角形を分類する。
  8. OCCUPATIONS:整形とピボット結果の形を整える:CONCAT・LEFT・LOWER で文字列を組み立て、MySQL には PIVOT がないので ROW_NUMBER と CASE WHEN でテーブルを 4 列にピボットする。
  9. 階層:二分木と組織図ある行が別の行に依存するとき:テーブルを自己結合して二分木のノードを分類し、レコードを重複させずに組織図の 5 階層を数える。
  10. サブクエリと HAVINGグループ化した後でしかわからない値で絞り込む:件数の最大値、1 回だけ現れる値、ウィンドウ関数による各グループの最大値の合計、そして各行を自分のグループと比べる相関サブクエリ。
  11. Project Planning:ウィンドウ関数と CTE連続するタスクをプロジェクトにまとめる:前の日付を見る LAG、各プロジェクトに番号を振る SUM OVER の累積和、そしてそれらをまとめて期間順に並べる CTE。

ブログのその他の記事