Hàm tổng hợp tích hợp sẵn 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 35 trên 72.
Đôi khi, ta cần dùng các hàm tổng hợp theo cách phức tạp hơn, chẳng hạn như so sánh từng hàng với một giá trị tổng hợp. Đây là lúc truy vấn lồng nhau trở nên hữu ích.
Khi muốn thực hiện các phép tính kết hợp từng hàng riêng lẻ với các giá trị tổng hợp, bạn cần dùng truy vấn lồng nhau. Đây là lý do:
Cách này sẽ không cho ra kết quả cho từng hàng như bạn muốn:
SELECT value + MIN(value)
FROM table1Nguyên nhân là các hàm tổng hợp hoạt động trên toàn bộ cột, còn tham chiếu 'value' đang cố xử lý từng hàng. Để giải quyết vấn đề này, ta dùng truy vấn lồng nhau:
SELECT value + (SELECT MIN(value) FROM table1)
FROM table1Cách này hoạt động vì truy vấn lồng nhau (SELECT MIN(value) FROM table1) được chạy trước và trả về một giá trị duy nhất, sau đó có thể dùng giá trị đó trong truy vấn chính cho từng hàng.
Các trường hợp thường dùng của phép tổng hợp lồng nhau:
1. So sánh từng giá trị với giá trị trung bình
2. Tính phần trăm trên tổng
3. Tìm chênh lệch so với giá trị lớn nhất hoặc nhỏ nhất
Thử thách
DễCác bảng và cột hiện có:
items:id,price
Tính mức giá của từng mặt hàng cao hơn giá trung bình của tất cả các mặt hàng bao nhiêu. Hiển thị ID mặt hàng, giá và độ chênh lệch so với mức trung bình. Đặt tên cột chênh lệch là diff_from_avg.
Sắp xếp kết quả theo độ chênh lệch giảm dần.
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