回顾: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 步:为只包含一个平均值的临时结果集命名
WITH avg_quality AS (
SELECT ____ AS avg_q
FROM devices_specs
)
-- 第 2 步:连接两个设备表,再关联临时结果集
SELECT dsp.device_id
FROM devices_specs dsp
INNER JOIN devices_score dsc ON ____
INNER JOIN avg_quality aq
-- 第 3 步:保留分别位于该平均值两侧的设备
WHERE ____基础知识中的所有课
自己练习: SQL 在线编辑器