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:
- Truy vấn con vô hướng, trả về một giá trị (một hàng, một cột)
- Truy vấn con hàng, trả về một hàng với nhiều cột
- 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ả
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:
- 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 - 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ử
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
2Điều kiện
Kiến thức cơ bản về điều kiệnTừ khóa ANDTừ khóa ORTừ khóa NOTKết hợp nhiều điều kiệnDấu ngoặc đơnGiá trị logic3Định dạng giá trị trả về cụ thể
Giá trị nullSắp xếp kết quả phần 1Sắp xếp kết quả phần 2Ôn tập: Công ty an ninh mạngGiới hạn số bản ghiÔn tập: Nhà máy sản xuất xe6Thử thách nhập môn
Ôn tập: bầu cử quốc hộiÔn tập: cảnh sát bắt giữ tội phạmÔn tập: vật chứa đồ uống tại quầy barÔn tập: kỹ sư tạo cột mớiTự luyện tập: Playground SQL