CTE với các truy vấn lồng nhau
Nếu bạn phải liệt kê nhiều truy vấn con trong mệnh đề FROM với các câu lệnh lồng nhau, truy vấn của bạn sẽ có xu hướng trở nên dài, phức tạp và khó đọc.
Vì nhiều truy vấn được viết với mục đích lưu lại và chạy lại trong tương lai, tổ chức hợp lý là chìa khóa cho một quy trình làm việc trơn tru. Sắp xếp các truy vấn con thành CTE sẽ giúp bạn tiết kiệm thời gian, dung lượng và tránh nhầm lẫn về lâu dài!
Bài tập này là một phần của khóa học
Xử lý dữ liệu trong SQL
Hướng dẫn bài tập
- Khai báo một CTE tính tổng số bàn thắng từ các trận diễn ra trong tháng Tám của mùa
'2013/2014'. - Lọc danh sách trong truy vấn con bên trong để chỉ chọn các trận trong tháng Tám của mùa
'2013/2014'. - Thực hiện
LEFT JOINCTE với bảng league bằngcountry_idtừ CTEmatch_list.
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
-- Set up your CTE
___ match_list ___ (
SELECT
country_id,
(home_goal + away_goal) AS goals
FROM match
-- Create a list of match IDs to filter data in the CTE
WHERE id IN (
SELECT ___
FROM ___
WHERE season = ___ AND EXTRACT(MONTH FROM ___) = ___))
-- Select the league name and average of goals in the CTE
SELECT
___,
___(___)
FROM league AS l
-- Join the CTE onto the league table using country_id
LEFT JOIN ___ ON l.id = match_list.___
GROUP BY l.name;