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 10.4] Capstone: SP báo cáo giao dịch theo tháng

    📖Cần ôn lý thuyết? Đọc bài giảng Buổi 10: Index & Transaction + Review toàn bộ khóa — khóa SQL

    Phần 5 — đóng gói báo cáo thành Stored Procedure. Tạo procedure sp_MonthlyReport với 2 tham số INPUT: year (INT) và month (INT, 1–12). Procedure trả về thống kê mỗi ngày trong tháng đó: trade_date, trade_count, total_value (tổng quantity * price), sắp theo trade_date. Chỉ có ngày nào có giao dịch mới xuất hiện.

    Để index trên trade_date dùng được, hãy tính đầu tháng (month_start) và đầu tháng kế tiếp rồi lọc trade_date >= month_start AND trade_date < month_start + 1 tháng (không dùng YEAR()/MONTH() trên cột).

    • SQL Server: DATEFROMPARTS(@year, @month, 1), DATEADD(MONTH, 1, ...).
    • MySQL: STR_TO_DATE(CONCAT(p_year, '-', p_month, '-01'), '%Y-%m-%d'), DATE_ADD(..., INTERVAL 1 MONTH).

    Hệ thống chấm gọi procedure với năm/tháng của giao dịch mới nhất trong bảng Trades.

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

      Bảng Trades.

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

      trade_date, trade_count, total_value (TAB), sắp theo trade_date.

    Ví dụ:

    Đầu vào:

    Đầu ra:

    2026-09-14	5	87800000.00
    2026-09-15	5	473000000.00
    2026-09-16	4	377250000.00
    2026-09-17	2	189000000.00
    2026-09-18	7	475450000.00
    2026-09-21	6	247075000.00
    2026-09-22	7	184500000.00
    2026-09-23	3	56900000.00
    2026-09-24	10	515100000.00
    2026-09-25	4	120700000.00

    Giải thích:

    Giao dịch mới nhất nằm trong tháng 09/2026 nên báo cáo tháng 09/2026.

    Chủ đề

    📊 SQLSQLSQL: Buổi 10 – Index, Transaction & CapstoneTất cả môn học

    Đang tải editor...