📊 Associate Data Practitioner

Associate Data Practitioner 問題の一覧 › 1. データの準備と取り込み

BigQuery のテーブルに、同一の order_id を持つ重複行が含まれています。order_id ごとに最新の updated_at の行のみを残したい場合、最も適切な SQL の方法はどれですか。

  1. SELECT DISTINCT * をそのまま実行する
  2. ROW_NUMBER() OVER (PARTITION BY order_id ORDER BY updated_at DESC) を使い、1 の行のみを抽出する
  3. GROUP BY order_id で全列を SELECT する
  4. LIMIT 1 を付ける
💡 答えと解説を見る
答え:B(ROW_NUMBER() OVER (PARTITION BY order_id ORDER BY updated_at DESC) を使い、1 の行のみを抽出する)
ウィンドウ関数 ROW_NUMBER で order_id ごとに最新順に番号を振り、1 の行を残すのが定石です。DISTINCT は updated_at が異なれば重複を除去できず、全列の GROUP BY はエラーになり、LIMIT 1 は全体で1行しか返しません。
関連サービス
LIMIT出力行数を減らすだけ。スキャン量(課金)は減らない
ウィンドウ関数OVER (PARTITION BY .. ORDER BY ..)。累計・順位・LAG/LEAD
← 前の問題次の問題 →🎯 問題で学ぶで解く

※ 学習用に作成したオリジナル問題です。本番試験とは異なります。