Các lượt nộp
    Danh sách bài
    Trang chủ
    Báo lỗi

    solution

    Đề bài: [MySQL] Bảng xếp hạng giải đấu nhiều tầng CTE

    Ban tổ chức một giải bóng đá lưu kết quả từng trận. Mỗi đội được 3 điểm nếu thắng, 1 nếu hòa, 0 nếu thua. Hãy dùng các CTE nối tầng để: (1) tách kết quả thành điểm của từng đội, (2) cộng tổng điểm, (3) xếp hạng.

    Bảng tran_dau:

    Cột Kiểu Ý nghĩa
    doi_nha VARCHAR(20) Đội nhà
    doi_khach VARCHAR(20) Đội khách
    ban_nha INT Bàn thắng đội nhà
    ban_khach INT Bàn thắng đội khách

    Yêu cầu: in doi, tong_diem. Sắp xếp theo tong_diem giảm dần, doi tăng dần.

    Ví dụ: đội nhà thắng 2-1 thì đội nhà +3, đội khách +0.

    • Định dạng đầu vào:

      SETUP SQL tạo bảng tran_dau và chèn dữ liệu.

    • Ràng buộc đầu vào:

      ban_nha, ban_khach >= 0. Không dùng NOW/CURDATE.

    • Định dạng đầu ra:

      Mỗi dòng: doi, tong_diem. Sắp xếp theo tong_diem giảm dần, doi tăng dần.

    Ví dụ:

    Đầu vào:

    CREATE TABLE tran_dau (doi_nha VARCHAR(20), doi_khach VARCHAR(20), ban_nha INT, ban_khach INT);
    INSERT INTO tran_dau VALUES ('Ha Noi','Hai Phong',2,1),('Hai Phong','Da Nang',0,0),('Ha Noi','Da Nang',1,1);

    Đầu ra:

    Ha Noi	4
    Da Nang	2
    Hai Phong	1

    Giải thích:

    Ha Noi: thắng (3) + hòa (1) = 4. Hai Phong: thua (0) + hòa (1) = 1. Da Nang: hòa (1) + hòa (1) = 2. Xếp Ha Noi, Da Nang, Hai Phong.

    Đang tải editor...