advanced
大規模データ分析向けのSQLクエリ最適化
数億行のデータを含むテーブルに対し、ウィンドウ関数と共通テーブル式(CTE)を駆使してパフォーマンスを最大化します。
📝 Prompt İçeriği
以下の要件を満たすSQLクエリをPostgreSQL方言で作成してください。
前提:
- テーブル「sales」には数億行の売上データが存在する (カラム: id, user_id, product_id, amount, sold_at)。
- テーブル「users」にはユーザー情報が存在する (カラム: id, name, segment)。
課題:
1. 各ユーザーについて、直近3ヶ月間の月別売上合計、および前年同月比(YoY)の成長率を計算してください。
2. 全ユーザーの平均売上に対し、売上貢献度が上位5%のユーザー(VIP)を抽出し、そのセグメント別の内訳を集計してください。
3. ウィンドウ関数を使用して、各ユーザーの「累積売上額」が初めて100万円を超えた日付を特定してください。
4. パフォーマンスを考慮し、適切なインデックス作成のクエリも併せて提示してください。
クエリの可読性と実行効率のバランスについての解説も含めてください。