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.2] Giá trị danh mục theo giá thị trường (multiple/nested CTE)

    📖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

    Tính giá trị danh mục theo giá thị trường ngày 2026-09-25 (giá cố định của hệ thống, không dùng ngày hiện tại):

    1. Giá đóng cửa từng mã ngày '2026-09-25' từ MarketPrices.
    2. Giá trị từng tài khoản = Σ Portfolio.quantity × close_price.
    3. Giá trị từng khách hàng = tổng giá trị các tài khoản của khách hàng.
    4. market_total = tổng giá trị tất cả khách hàng.

    Liệt kê các khách hàng có giá trị danh mục lớn hơn trung bình giá trị danh mục của các khách hàng có nắm giữ cổ phiếu. Xuất customer_id, portfolio_value, pct_of_total = 100 * portfolio_value / market_total (làm tròn 2 chữ số thập phân). Sắp xếp portfolio_value giảm dần, đồng hạng theo customer_id tăng dần.

    Yêu cầu dùng nhiều CTE, trong đó CTE sau tham chiếu CTE trước.

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

      Portfolio(account_id, symbol, quantity), Accounts(account_id, customer_id), MarketPrices(symbol, trade_date, close_price).

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

      customer_id, portfolio_value, pct_of_total (TAB; pct_of_total 2 chữ số thập phân), sắp xếp portfolio_value giảm dần, customer_id tăng dần.

    Ví dụ:

    Đầu vào:

    Đầu ra:

    25	1183000000.00	8.18
    21	994380000.00	6.87
    40	975230000.00	6.74
    6	864979000.00	5.98
    39	838862000.00	5.80
    38	753540000.00	5.21
    33	636003000.00	4.40
    2	575096000.00	3.97
    7	559218000.00	3.86
    34	529072000.00	3.66
    36	491450000.00	3.40
    11	478400000.00	3.31
    27	465176000.00	3.21
    13	460168000.00	3.18
    32	445174000.00	3.08

    Giải thích:

    Giá trị danh mục = số lượng nắm giữ × giá đóng cửa 2026-09-25, cộng theo tài khoản rồi theo khách hàng.

    Chủ đề

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

    Đang tải editor...