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 3.2] Phiên biến động xấu nhất của từng mã

    📖Cần ôn lý thuyết? Đọc bài giảng Buổi 3: Window Functions — khóa SQL

    Bộ phận quản trị rủi ro muốn biết, với mỗi mã, phiên nào có % biến động giá thấp nhất (giảm sâu nhất) so với phiên liền trước.

    Với mỗi mã có ít nhất 2 phiên, hãy xuất đúng 1 dòng: trade_date của phiên có pct_thay_doi nhỏ nhất và giá trị đó (pct_thay_doi = 100 * (close - prev_close) / prev_close, làm tròn 2 chữ số, DECIMAL(18,2)). Nếu nhiều phiên cùng mức thấp nhất thì lấy phiên sớm nhất. Mã tăng liên tục thì mức thấp nhất là số dương (vẫn xuất).

    Sắp xếp theo pct_thay_doi tăng dần (giảm sâu nhất trước), đồng giá trị thì theo symbol.

    Gợi ý: cần hai lớp — LAG để tính % thay đổi, rồi ROW_NUMBER() OVER (PARTITION BY symbol ORDER BY pct, trade_date) để chọn dòng đầu tiên của mỗi mã.

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

      Bảng MarketPrices(symbol, trade_date, close_price).

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

      symbol, trade_date, pct_thay_doi (TAB); sắp xếp theo pct_thay_doi, symbol.

    Ví dụ:

    Đầu vào:

    Đầu ra:

    CEO	2026-09-23	-3.33
    VCS	2026-09-22	-3.19
    SHS	2026-09-25	-3.16
    PVS	2026-09-22	-3.06
    HPG	2026-09-15	-3.00
    FPT	2026-09-23	-2.97
    VNM	2026-09-21	-2.97
    VCB	2026-09-15	-2.94
    PVI	2026-09-17	-2.91
    IDC	2026-09-25	-2.75
    NVB	2026-09-21	-2.11
    MBS	2026-09-15	-2.00

    Giải thích:

    Mỗi mã một dòng: phiên có mức giảm sâu nhất (hoặc tăng ít nhất).

    Chủ đề

    📊 SQLSQLSQL: Buổi 3 – Window FunctionsTất cả môn học

    Đang tải editor...