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

Vận động viên giành nhiều huy chương nhất theo vùng

Mục tiêu của bạn trong bài tập này là hiển thị vận động viên giành nhiều huy chương nhất theo từng vùng. Để thiết lập báo cáo này, bạn cần tận dụng hàm cửa sổ ROW_NUMBER(), hàm này đánh số mỗi hàng bằng một số nguyên tăng dần: hàng đầu tiên là 1, hàng thứ hai là 2, v.v.

Cú pháp cho hàm cửa sổ này là ROW_NUMBER() OVER (PARTITION BY field ORDER BY field). Lưu ý rằng không có đối số nào bên trong phần hàm ban đầu.

Khi thiết lập đúng, row_num = 1 sẽ đại diện cho vận động viên giành nhiều huy chương nhất trong vùng đó. Nếu có nhiều vận động viên có tổng bằng nhau, bất kỳ ai trong số họ đều có thể xuất hiện ở vị trí đầu. Lưu ý bạn không thể dùng phép tính cửa sổ trong mệnh đề HAVING hoặc WHERE, vì vậy bạn sẽ cần dùng một truy vấn con để lọc.

Bạn có thể tham khảo Sơ đồ E:R. Chúng ta sẽ dùng summer_games_clean để tránh phải xử lý giá trị null.

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

Lập báo cáo trong SQL

Xem khóa học

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 
	-- Query region, athlete_name, and total gold medals
	____, 
    ____ AS athlete_name, 
    ____ AS total_golds,
    -- Assign a regional rank to each athlete
    ____ AS row_num
FROM ____ AS s
JOIN ____ AS a
ON ____
JOIN ____ AS c
ON ____
GROUP BY ____;
Chỉnh sửa và Chạy Mã