Menu
CoddyTech

Truy vấn con phần 2

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

Có ba loại truy vấn con chính:

  1. Truy vấn con vô hướng, trả về một giá trị (một hàng, một cột)
  2. Truy vấn con hàng, trả về một hàng với nhiều cột
  3. Truy vấn con bảng, trả về nhiều hàng và cột

Ví dụ, dưới đây là một số trường hợp sử dụng cho từng loại truy vấn con:

Truy vấn con vô hướng: Tìm nhân viên có mức lương cao hơn mức lương trung bình:

SELECT name, salary
FROM employees
WHERE salary > (
    SELECT AVG(salary)
    FROM employees
);

Truy vấn con theo hàng: tìm nhân viên có cùng bộ phận và mức lương với Alice

SELECT name
FROM employees
WHERE (department, salary) = (
    SELECT department, salary
    FROM employees
    WHERE name = 'Alice'
);

Truy vấn con trong bảng, hiển thị các phòng ban và số lượng nhân viên

SELECT department, count
FROM (
    SELECT department, COUNT(*) as count
    FROM employees
    GROUP BY department
) as dept_counts;

Hãy chú ý đến các trường hợp sử dụng:

  • Giá trị vô hướng: các phép so sánh đơn giản (>, <, =)
  • Khi bạn cần khớp nhiều cột
  • Khi bạn cần truy vấn từ một tập kết quả
challenge icon

Thử thách

Dễ

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

  • shop: price, quantity, category, list_date

Tìm các danh mục có tổng số lượng lớn hơn mức trung bình của tất cả số lượng trong cửa hàng. Trả về category và tổng số lượng có tên total_quantity.

Quan trọng: Bạn phải dùng truy vấn con bên trong mệnh đề HAVING để tính mức trung bình. Không dùng giá trị được ghi sẵn hoặc một truy vấn riêng: truy vấn con phải tính AVG(quantity) từ bảng shop ngay bên trong HAVING.

Các bước giải:

  1. Trước tiên, viết một truy vấn con để tính mức trung bình của tất cả số lượng trong cửa hàng: SELECT AVG(quantity) FROM shop
  2. Sau đó, tính tổng số lượng của từng danh mục và so sánh với truy vấn con này bằng từ khóa HAVING

Tự làm thử

quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

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

Tự luyện tập: Playground SQL