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.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.)
Portfolio(account_id, symbol, quantity), Accounts(account_id, customer_id).
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:
Đang tải editor...