Menu
CoddyTech

Ôn tập về truy vấn WITH

Thuộc phần Kiến thức cơ bản trong hành trình SQL của Coddy. Bài học 50 trên 72.

challenge icon

Thử thách

Dễ

Các bảng và cột hiện có:

  • devices_specs: device_id, width, height, num_features, opinion
  • devices_score: device_id, score

Chất lượng của thiết bị được đo bằng (width/height)*num_features.

Ta muốn tìm tất cả thiết bị bị đánh giá quá cao. Lấy tất cả thiết bị có opinion cao hơn chất lượng trung bình và score thấp hơn chất lượng trung bình. Chỉ trả về device_id.

Để giải bài này, hãy dùng mệnh đề WITH để tạo truy vấn con tính chất lượng trung bình, rồi dùng lại truy vấn đó trong truy vấn chính.

Tự làm thử

-- Bước 1: đặt tên cho tập kết quả tạm thời chứa một giá trị trung bình duy nhất
WITH avg_quality AS (
    SELECT ____ AS avg_q
    FROM devices_specs
)
-- Bước 2: kết hợp hai bảng thiết bị, rồi thêm tập kết quả tạm thời
SELECT dsp.device_id
FROM devices_specs dsp
INNER JOIN devices_score dsc ON ____
INNER JOIN avg_quality aq
-- Bước 3: giữ lại các thiết bị nằm ở hai phía đối diện của giá trị trung bình đó
WHERE ____

Tất cả bài học trong Kiến thức cơ bản

Tự luyện tập: Playground SQL