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

    solution

    Đề bài: [SQL Server] Xếp hạng nhân viên bằng self-join bất đẳng thức

    Cần tính thứ hạng doanh số của nhân viên bằng cách self-join bất đẳng thức (không dùng hàm cửa sổ): hạng của một người = số người có doanh số cao hơn cộng 1. Dữ liệu ở bảng nv.

    Cột Kiểu Ý nghĩa
    ten nvarchar(50) Tên nhân viên
    doanhso int Doanh số (triệu đồng)

    Người có doanh số cao nhất đứng hạng 1. Người cùng doanh số có cùng hạng.

    Ví dụ doanh số 90, 90, 80 → hạng 1, 1, 3.

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

      SETUP SQL tạo bảng nv và chèn doanh số nhân viên.

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

      doanhso ≥ 0. Hạng tính bằng đếm số người doanh số lớn hơn cộng 1. Không dùng RANK().

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

      Ba cột: ten, doanhso, hang. Sắp xếp theo doanhso giảm dần, rồi ten tăng dần.

    Ví dụ:

    Đầu vào:

    CREATE TABLE nv (ten nvarchar(50), doanhso int);
    INSERT INTO nv VALUES (N'An',90),(N'Binh',90),(N'Cuong',80);

    Đầu ra:

    An	90	1
    Binh	90	1
    Cuong	80	3

    Giải thích:

    An và Binh cùng 90 (không ai cao hơn) nên hạng 1. Cuong 80 có 2 người cao hơn nên hạng 3.

    Đang tải editor...