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

    solution

    Đề bài: [MySQL] Phân tích giao dịch theo khung giá trị

    Ví điện tử ViPay phân tích hành vi người dùng theo khung giá trị giao dịch: Thap (dưới 100000 đồng), Trung binh (từ 100000 đến dưới 500000 đồng) và Cao (từ 500000 đồng trở lên).

    Bảng giao_dich:

    Cột Kiểu Ý nghĩa
    ma_gd INT Mã giao dịch (duy nhất)
    gia_tri INT Giá trị giao dịch (đồng)

    Với mỗi khung, hãy tính so_gd (số giao dịch), tong_gt (tổng giá trị) và ti_trong (phần trăm tổng giá trị của khung so với tổng toàn bộ giao dịch, làm tròn 2 chữ số thập phân). Chỉ in những khung có ít nhất 2 giao dịch, theo thứ tự Thap → Trung binh → Cao. Lưu ý: mẫu số của tỉ trọng là tổng tất cả giao dịch, kể cả giao dịch thuộc khung bị loại. Dữ liệu luôn có tổng giá trị lớn hơn 0.

    Ví dụ. Với dữ liệu: (1, 50000), (2, 80000), (3, 200000), (4, 300000), (5, 700000) thì kết quả là:

    Thap	2	130000	9.77
    Trung binh	2	500000	37.59
    

    Khung Cao chỉ có 1 giao dịch nên không in, nhưng 700000 của nó vẫn nằm trong mẫu số 1330000.

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

      Một kịch bản SQL gồm các lệnh CREATE TABLE và INSERT tạo dữ liệu cho bảng giao_dich.

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

      Số dòng của bảng ≤300\le 300≤300; 0≤gia_tri≤1080 \le gia\_tri \le 10^80≤gia_tri≤108; tổng giá trị toàn bảng >0> 0>0.

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

      Mỗi dòng gồm nhom, so_gd, tong_gt, ti_trong cách nhau bởi ký tự TAB, không có dòng tiêu đề. ti_trong có đúng 2 chữ số thập phân.

    Ví dụ:

    Đầu vào:

    CREATE TABLE giao_dich (ma_gd INT, gia_tri INT);
    INSERT INTO giao_dich VALUES (1, 50000), (2, 80000), (3, 200000), (4, 300000), (5, 700000);

    Đầu ra:

    Thap	2	130000	9.77
    Trung binh	2	500000	37.59

    Giải thích:

    Tổng toàn bộ là 1330000. Khung Thap có 2 giao dịch tổng 130000 (chiếm 9.77%), khung Trung binh có 2 giao dịch tổng 500000 (37.59%). Khung Cao chỉ có 1 giao dịch nên bị HAVING loại, nhưng giá trị của nó vẫn được tính vào mẫu số.

    Đang tải editor...