復習 - WITHクエリ
CoddyのSQLジャーニー「基礎」セクションの一部。レッスン 50/72。
チャレンジ
簡単利用可能なテーブルと列:
devices_specs:device_id,width,height,num_features,opiniondevices_score:device_id,score
デバイスの品質は (width/height)*num_features で測定されます。
過大評価されているデバイスをすべて見つけます。デバイスの opinion が品質の平均より大きく、デバイスの score が平均品質より小さいデバイスをすべて取得します。device_id のみを返してください。
解決するには、WITH句を使って平均品質を計算するサブクエリを作成し、それをメインクエリで再利用します。
自分で試してみよう
-- ステップ 1: 1 つの平均値を保持する一時的な結果セットに名前を付ける
WITH avg_quality AS (
SELECT ____ AS avg_q
FROM devices_specs
)
-- ステップ 2: 2 つのデバイステーブルを結合し、一時的な結果セットを結合する
SELECT dsp.device_id
FROM devices_specs dsp
INNER JOIN devices_score dsc ON ____
INNER JOIN avg_quality aq
-- ステップ 3: その平均値を挟んで反対側に位置するデバイスを残す
WHERE ____基礎のすべてのレッスン
自分で練習してみよう: SQLプレイグラウンド