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

Dùng CASE và AVG để suy ra tỉ lệ

Các câu lệnh CASE sẽ trả về bất kỳ giá trị nào bạn chỉ định trong mệnh đề THEN. Đây là một công cụ cực kỳ mạnh để tính toán và xử lý dữ liệu khi dùng cùng với hàm tổng hợp. Một nhiệm vụ quan trọng bạn có thể làm là dùng CASE bên trong hàm AVG để tính tỉ lệ (fraction) của thông tin trong cơ sở dữ liệu.

Đây là ví dụ cách bạn thiết lập:

AVG(CASE WHEN condition_is_met THEN 1
         WHEN condition_is_not_met THEN 0 END)

Với cách tiếp cận này, điều quan trọng là chỉ rõ chính xác bản ghi nào được tính là 0, nếu không phép tính của bạn có thể sai!

Nhiệm vụ của bạn là xem số trận thắng, thua và hòa ở mỗi quốc gia. Bảng matches đã được lọc để bao gồm tất cả các trận từ mùa giải 2013/2014 và 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

  • Bên trong hàm AVG(), hãy hoàn thiện câu lệnh CASE bằng cách kiểm tra m.home_goal khác m.away_goal, gán giá trị 0 nếu điều kiện này đúng.
  • Lặp lại quy trình để so sánh số bàn sân nhà và sân khách trong '2014/2015', đặt bí danh là ties_2014_2015.

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.

SELECT 
	c.name AS country,
    -- Calculate the fraction of tied games in each season
	___(___ ___ m.season='2013/2014' AND m.home_goal = m.away_goal THEN 1
			WHEN m.season='2013/2014' AND m.home_goal ___ m.away_goal THEN ___
			END) AS ties_2013_2014,
	___(___ ___ m.season='2014/2015' ___ ___ = ___ ___ ___
			WHEN m.season='2014/2015' ___ m.home_goal != m.away_goal THEN ___
			___) AS ___
FROM country AS c
LEFT JOIN matches AS m
ON c.id = m.country_id
GROUP BY country;
Chỉnh sửa và Chạy Mã