Bắt đầu ngayBắt đầu miễn phí

Kết hợp các CTE lại với nhau

Giờ bạn đã tạo xong hai truy vấn con để xác định đối thủ sân nhà và sân khách, hãy sắp xếp lại truy vấn của bạn với hai truy vấn con homeaway dưới dạng Common Table Expressions (CTE). Bạn sẽ thấy truy vấn chính có cụm SELECT DISTINCT. Nếu không chỉ lấy các trận đấu DISTINCT, bạn có thể trả về bản ghi trùng lặp cho mỗi trận đã chơi.

Tiếp tục xây dựng truy vấn để trích xuất tất cả các trận Manchester United đã chơi trong mùa 2014/2015.

Bài tập này là một phần của khóa học

Xử lý dữ liệu trong SQL

Xem khóa học

Hướng dẫn bài tập

  • Khai báo các CTE homeaway trước truy vấn chính.
  • Nối (join) các CTE với bảng match bằng LEFT JOIN.
  • Chọn dữ liệu liên quan từ các CTE vào truy vấn chính.
  • Trong truy vấn chính, chọn ngày từ match, tên đội từ các CTE, và số bàn thắng sân nhà/sân khách từ match.

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 the home team CTE
___ ___ ___ (
  SELECT m.id, t.team_long_name,
	  CASE WHEN m.home_goal > m.away_goal THEN 'MU Win'
		   WHEN m.home_goal < m.away_goal THEN 'MU Loss' 
  		   ELSE 'Tie' END AS outcome
  FROM match AS m
  LEFT JOIN team AS t ON m.hometeam_id = t.team_api_id),
-- Set up the away team CTE
___ ___ (
  SELECT m.id, t.team_long_name,
	  CASE WHEN m.home_goal > m.away_goal THEN 'MU Loss'
		   WHEN m.home_goal < m.away_goal THEN 'MU Win' 
  		   ELSE 'Tie' END AS outcome
  FROM match AS m
  LEFT JOIN team AS t ON m.awayteam_id = t.team_api_id)
-- Select the date, team names and goals
SELECT DISTINCT
    ___.___,
    ___.___ AS home_team_name,
    ___.___ AS away_team_name,
    ___.___,
    m.away_goal
-- Join the CTEs onto the match table
FROM match AS m
___ JOIN ___ ON m.id = ___
___ JOIN ___ ON m.id = ___
WHERE m.season = '2014/2015'
      AND (home.team_long_name = 'Manchester United' 
           OR away.team_long_name = 'Manchester United');
Chỉnh sửa và Chạy Mã