1.4標準
顧客ごとに複数の更新履歴がある。
更新時刻が最新の1行だけを分析用テーブルへ残す。
最も適切なSQL構造はどれか。
× 不正解
ROW_NUMBERとPARTITION BY・ORDER BYで顧客ごとの最新行を選べる。更新時刻の同値時のタイブレークも定義する。
詳細解説
正しいROW_NUMBER() OVER(PARTITION BY customer_id ORDER BY updated_at DESC)
顧客ごとに更新時刻の順位を付け、1位だけを選択できる。
顧客ごとに更新時刻の順位を付け、1位だけを選択できる。
誤り全行へLIMIT 1を適用する
全顧客を対象にせず、テーブル全体の1行しか返さない。
全顧客を対象にせず、テーブル全体の1行しか返さない。
誤りS3の最終更新時刻だけを見る
オブジェクト時刻はレコード更新履歴を表す保証がない。
オブジェクト時刻はレコード更新履歴を表す保証がない。
誤りIAMの最終アクセス情報を使う
IAMアクセス情報は顧客レコードの更新時刻ではない。
IAMアクセス情報は顧客レコードの更新時刻ではない。
実際に確かめる
一時的な検証環境で実行できる例です。
Amazon AthenaまたはRedshiftのROW_NUMBER、OVER、PARTITION BYを確認する。期待される結果
全体LIMITとグループ内順位付けの違いを説明できる。理解のポイント
- SQL
- ROW_NUMBER
- PARTITION BY
- 最新行
確認時の注意
- 確認環境: AWS公式DEA-C01試験ガイドと各サービスの公式ドキュメントの確認
- AWS公式DEA-C01 Domain 1と各サービスの公式ドキュメントを確認する。
基礎のおさらい
ウィンドウ関数
GROUP BYで行を潰さずに順位や累計を計算する。
決定性
同じ更新時刻がある場合はイベントIDなど第二キーで順序を一意にする。
問題IDAWS-DEA-079
確認環境AWS公式DEA-C01試験ガイドと各サービスの公式ドキュメントの確認
最終技術確認2026-08-20
誤り・権利侵害を報告