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

    solution

    Đề bài: [SQL Server] Top 2 sản phẩm bán chạy mỗi danh mục

    Sàn thương mại điện tử Tiki muốn lấy ra 2 sản phẩm bán chạy nhất (theo số lượng đã bán) trong mỗi danh mục để hiển thị mục "Đề xuất".

    Bảng sanpham:

    Cột Kiểu Ý nghĩa
    masp INT Mã sản phẩm
    ten NVARCHAR(50) Tên sản phẩm
    danhmuc NVARCHAR(30) Danh mục
    daban INT Số lượng đã bán

    Với mỗi danh mục, dùng ROW_NUMBER() đánh số theo daban giảm dần (tie-break theo masp tăng dần), rồi lấy các dòng có số thứ tự ≤ 2. In danhmuc, ten, daban.

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

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

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

      1 ≤ số sản phẩm ≤ 1000. daban ≥ 0.

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

      Mỗi dòng: danhmuc, ten, daban. Sắp xếp theo danhmuc tăng dần, daban giảm dần, masp tăng dần.

    Ví dụ:

    Đầu vào:

    CREATE TABLE sanpham (masp INT, ten NVARCHAR(50), danhmuc NVARCHAR(30), daban INT);
    INSERT INTO sanpham VALUES
    (1, N'Sach IT', N'Sach', 500),
    (2, N'Sach Van', N'Sach', 300),
    (3, N'Sach Toan', N'Sach', 200),
    (4, N'Tai nghe', N'Dien tu', 800),
    (5, N'Chuot', N'Dien tu', 600);

    Đầu ra:

    Dien tu	Tai nghe	800
    Dien tu	Chuot	600
    Sach	Sach IT	500
    Sach	Sach Van	300

    Giải thích:

    Danh mục Sach lấy 2 cao nhất: Sach IT (500), Sach Van (300). Danh mục Dien tu lấy Tai nghe (800), Chuot (600). Sach Toan bị loại vì hạng 3.

    Đang tải editor...