復習 - WITHクエリ
CoddyのSQLジャーニー「基礎」セクションの一部。レッスン 50/72。
チャレンジ
簡単利用可能なテーブルと列:
<b>devices_specs</b>:<b>device_id</b>,<b>width</b>,<b>height</b>,<b>num_features</b>,<b>opinion</b><b>devices_score</b>:<b>device_id</b>,<b>score</b>
デバイスの品質は (width/height)*num_features で測定されます。
過大評価されているすべてのデバイスを見つけたいと考えています。デバイスの opinion が average 品質より大きく、デバイスの score が average 品質より小さい、すべての devices を取得してください。device_id のみを返します。
これを解決するには、WITH 句を使用して average 品質を計算するサブクエリを作成し、それをメインクエリで再利用します。
自分で試してみよう
-- ステップ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プレイグラウンド