PARTITION BY một cột
Mệnh đề PARTITION BY cho phép bạn tính các "cửa sổ" riêng dựa trên các cột mà bạn muốn chia nhỏ kết quả. Ví dụ, bạn có thể tạo một cột tính mức trung bình tổng thể số bàn thắng được ghi cho mỗi mùa giải.
Trong bài tập này, bạn sẽ tạo một tập dữ liệu về các trận đấu của Legia Warszawa (Warsaw League), đội xếp hạng cao nhất ở Ba Lan, và so sánh phong độ từng trận của họ với mức trung bình chung của mùa giải đó.
Bạn thấy nhiều giá trị ngoại lai ở đâu hơn? Là các trận sân nhà hay sân khách của Legia Warszawa?
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
- Hoàn thiện hai hàm cửa sổ để tính trung bình số bàn thắng sân nhà và sân khách. Phân vùng (partition) các hàm cửa sổ theo mùa giải để tính mức trung bình riêng cho từng mùa.
- Lọc truy vấn chỉ bao gồm các trận do Legia Warszawa thi đấu,
id = 8673.
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
date,
season,
home_goal,
away_goal,
CASE WHEN hometeam_id = 8673 THEN 'home'
ELSE 'away' END AS warsaw_location,
-- Calculate separately the average home and away goals scored, partitioned by season
___(___) ___(___ ___ ___) AS season_homeavg,
___(___) ___(___ ___ ___) AS season_awayavg
FROM match
-- Filter the data set for Legia Warszawa (id 8673) matches only
WHERE
___ = ___
OR ___ = ___
ORDER BY (home_goal + away_goal) DESC;