Lấy Top 3 Điểm Cao Nhất Cho Mỗi Môn Học Trong MySQL
Để trích xuất ba học sinh có điểm cao nhất trong từng môn học từ bảng điểm, MySQL cung cấp nhiều cách tiếp cận — từ phương pháp truyền thống dùng subquery đến kỹ thuật hiện đại dựa trên hàm cửa sổ. Dưới đây là giải pháp tối ưu, rõ ràng và tương thích với MySQL 8.0 trở lên.
Cấu trúc dữ liệu mẫu
Giả sử ta có bảng scores với các cột:
student_i ...
Đăng vào ngày 20 tháng 7 lúc 23:25
Các Bài Tập Thực Hành SQL với Hàm Cửa Sổ
Hàm cửa sổ trong Hive
Bài toán đầu tiên: Có bảng dữ liệu điểm số t1 như sau
uidclass_namescore
AChinese90
AEnglish89
AMath88
B......
Yêu cầu: Tính tổng điểm và xếp hạng
uidchinese_scoreEnglish_scoreMath_scoretotal_scorerank
A9089882671
B...
Chuyển hàng thành cột + hàm rank()
CREATE TABLE StudentScores (
user_id varchar(255),
...
Đăng vào ngày 1 tháng 7 lúc 01:08