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 5.4] Tổng hợp: khách hàng nắm giữ lớn nhất từng mã

    📖Cần ôn lý thuyết? Đọc bài giảng Buổi 5: CTE, TEMP TABLE và Subquery (truy vấn con) — khóa SQL

    Báo cáo tập trung sở hữu: với mỗi mã chứng khoán, tìm khách hàng nắm giữ nhiều nhất (theo số lượng cổ phiếu cộng dồn trên mọi tài khoản của khách hàng) và tỷ trọng của họ trong tổng số lượng nắm giữ mã đó.

    • holding của (khách hàng, mã) = Σ Portfolio.quantity trên mọi tài khoản của khách hàng.
    • Nếu nhiều khách hàng cùng nắm giữ lớn nhất, chọn khách hàng có customer_id nhỏ nhất.
    • pct = 100 * holding lớn nhất / tổng số lượng mọi khách hàng nắm giữ mã (làm tròn 2 chữ số thập phân).

    Xuất symbol, customer_id, top_holding, total_holding, pct; sắp xếp symbol tăng dần. Mã không ai nắm giữ thì không xuất hiện.

    Bạn có thể giải bằng subquery, CTE hoặc bảng tạm — cách nào cũng được chấm như nhau. (Bài giảng trình bày cả ba cách.)

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

      Portfolio(account_id, symbol, quantity), Accounts(account_id, customer_id).

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

      symbol, customer_id, top_holding, total_holding, pct (TAB; pct 2 chữ số thập phân), sắp xếp symbol tăng dần.

    Ví dụ:

    Đầu vào:

    Đầu ra:

    CEO	33	8000	31500	25.40
    FPT	21	6000	19500	30.77
    HPG	17	5500	40500	13.58
    IDC	13	5000	26900	18.59
    MBS	33	5500	19300	28.50
    NVB	2	1000	5200	19.23
    PVI	7	5000	18500	27.03
    PVS	39	5000	17400	28.74
    SHS	32	10000	40200	24.88
    VCB	11	5000	22800	21.93
    VCS	40	5500	30200	18.21
    VNM	27	5200	33800	15.38

    Giải thích:

    Mỗi mã cho ra một khách hàng nắm giữ nhiều nhất.

    Chủ đề

    📊 SQLSQLSQL: Buổi 5 – Subquery, CTE & TEMP TABLETất cả môn học

    Đang tải editor...