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

    Đề bài: [SQL 9.2] SP tăng số dư cho khách hàng VIP theo tỷ lệ

    📖Cần ôn lý thuyết? Đọc bài giảng Buổi 9: Stored Procedure & Trigger (cơ bản) — khóa SQL

    Cuối quý công ty tặng "lãi ưu đãi" cho khách hàng VIP. Tạo stored procedure sp_BoostVipBalance nhận một tham số INPUT rate (DECIMAL(5,2), đơn vị phần trăm, ví dụ 2.5 = 2,5%).

    • Khách hàng VIP = khách hàng có total_trade_value >= 200000000 trong bảng CustomerStats.
    • Với mọi tài khoản ACTIVE của khách hàng VIP: balance = ROUND(balance * (1 + rate/100), 2).
    • Tài khoản CLOSED và tài khoản của khách hàng không phải VIP giữ nguyên.

    Lưu ý MySQL không cho UPDATE một bảng có subquery trực tiếp trên chính bảng đó — ở đây subquery đọc CustomerStats nên hoàn toàn hợp lệ. Hệ thống chấm gọi procedure với rate = 2.5 rồi in toàn bộ account_id, balance.

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

      Bảng Accounts(account_id, customer_id, balance, status), CustomerStats(customer_id, total_trade_value).

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

      account_id, balance (TAB), sắp theo account_id tăng dần.

    Ví dụ:

    Đầu vào:

    Đầu ra:

    1	67000000.00
    2	8000000.00
    3	32000000.00
    4	8600000000.00
    5	3000000.00
    6	67000000.00
    7	98000000.00
    8	230000000.00
    9	1250000000.00
    10	32800000.00
    11	3485000000.00
    12	780000000.00
    13	410000000.00
    14	410000000.00
    15	32000000.00
    16	8000000.00
    17	1250000000.00
    18	410000000.00
    19	230000000.00
    20	120000000.00
    21	15000000.00
    22	780000000.00
    23	780000000.00
    24	120000000.00
    25	67000000.00
    26	67000000.00
    27	230000000.00
    28	120000000.00
    29	230000000.00
    30	100450000.00
    31	235750000.00
    32	100450000.00
    33	3400000000.00
    34	67000000.00
    35	8600000000.00
    36	15000000.00
    37	410000000.00
    38	3000000.00
    39	410000000.00
    40	410000000.00
    41	15000000.00
    42	1281250000.00
    43	15375000.00
    44	15375000.00
    45	230000000.00
    46	780000000.00
    47	1250000000.00
    48	45000000.00
    49	32000000.00
    50	32000000.00
    51	98000000.00
    52	32000000.00
    53	98000000.00
    54	8000000.00
    55	15000000.00
    56	32000000.00
    57	15000000.00
    58	120000000.00
    59	1250000000.00
    60	32000000.00
    61	1250000000.00
    62	67000000.00
    63	8000000.00
    64	410000000.00
    65	100450000.00
    66	3485000000.00
    67	68675000.00
    68	799500000.00
    69	410000000.00
    70	120000000.00
    71	230000000.00
    72	67000000.00
    73	8000000.00
    74	1250000000.00
    75	3400000000.00
    76	32000000.00
    77	799500000.00
    78	32800000.00
    79	8200000.00
    80	8200000.00
    81	98000000.00
    82	32000000.00
    83	3000000.00
    84	1250000000.00
    85	8000000.00
    86	3400000000.00
    87	780000000.00
    88	98000000.00
    89	410000000.00
    90	32000000.00
    91	780000000.00
    92	120000000.00
    93	8600000000.00

    Giải thích:

    Các KH 5, 16, 22, 32, 35, 36 là VIP: mọi tài khoản ACTIVE của họ tăng 2,5%.

    Chủ đề

    📊 SQLSQLSQL: Buổi 9 – Stored Procedure & TriggerTất cả môn học

    Đang tải editor...