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

    Đề bài: [SQL Server] Điểm trung bình ba môn xoay theo lớp

    Trường THPT Chu Văn An tổng hợp kết quả thi thử: mỗi lớp một dòng với điểm trung bình của ba môn toan, van, anh (làm tròn 2 chữ số thập phân).

    Bảng diemthi:

    Cột Kiểu Ý nghĩa
    malop varchar(10) Mã lớp
    mon varchar(10) 'toan', 'van' hoặc 'anh'
    diem int Điểm bài thi (0–10)

    Lưu ý: phải CAST(diem AS decimal(...)) trước khi đưa vào PIVOT (AVG(...)), nếu không AVG trên kiểu int sẽ bị cắt phần thập phân. Kết quả bọc CAST(ROUND(..., 2) AS decimal(10,2)).

    Ví dụ

    Lớp 12A1 có hai bài toán điểm 7 và 8 thì cột toan in 7.50.

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

      Script T-SQL tạo bảng diemthi và chèn dữ liệu. Mỗi lớp luôn có ít nhất một bài thi ở cả ba môn.

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

      3≤3 \le3≤ số dòng ≤3000\le 3000≤3000; 0≤diem≤100 \le diem \le 100≤diem≤10; mỗi lớp có đủ điểm cả 3 môn.

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

      SELECT in malop, toan, van, anh (mỗi cột là điểm trung bình dạng số thập phân 2 chữ số), sắp xếp theo malop tăng dần.

    Ví dụ:

    Đầu vào:

    CREATE TABLE diemthi (malop varchar(10), mon varchar(10), diem int);
    INSERT INTO diemthi VALUES ('12A1','toan',7),('12A1','toan',8),('12A1','van',6),('12A1','anh',9),('12A2','toan',5),('12A2','van',7),('12A2','van',8),('12A2','anh',6);

    Đầu ra:

    12A1	7.50	6.00	9.00
    12A2	5.00	7.50	6.00

    Giải thích:

    Lớp 12A1: trung bình toán (7+8)/2 = 7.50, văn 6.00, anh 9.00. Lớp 12A2: toán 5.00, văn (7+8)/2 = 7.50, anh 6.00.

    Chủ đề

    🗄️ Cơ sở dữ liệuSQL ServerSQL Server: PIVOTTất cả môn học

    Đang tải editor...