Mỗi ngày, ban lãnh đạo muốn xem Top 3 mã có giá trị giao dịch lớn nhất (giá trị = close_price * volume).
Với các ngày từ 2026-09-23 đến 2026-09-25, hãy xếp hạng các mã trong từng ngày theo giá trị giao dịch giảm dần bằng RANK() (mỗi ngày xếp hạng riêng — PARTITION BY trade_date) và chỉ giữ các mã có hạng ≤ 3. Nếu đồng hạng ở vị trí 3 thì giữ tất cả các mã đồng hạng đó (có thể ra hơn 3 mã).
Gợi ý: không thể lọc trực tiếp theo cột hạng trong WHERE cùng cấp — hãy đặt truy vấn có hàm cửa sổ vào một truy vấn con ở mệnh đề FROM (derived table) rồi lọc ở truy vấn ngoài.
Sắp xếp theo trade_date tăng dần, rồi hang tăng dần, rồi symbol tăng dần.
Bảng MarketPrices(symbol, trade_date, close_price, volume).
trade_date, hang, symbol, gia_tri (DECIMAL(18,2)) — TAB; sắp xếp theo trade_date, hang, symbol.
Ví dụ:
Đầu vào:
Đầu ra:
2026-09-23 1 FPT 658560000000.00
2026-09-23 2 VNM 539784000000.00
2026-09-23 3 VCS 473760000000.00
2026-09-24 1 FPT 997920000000.00
2026-09-24 2 VNM 545292000000.00
2026-09-24 3 IDC 397850000000.00
2026-09-25 1 VCB 717600000000.00
2026-09-25 2 IDC 371000000000.00
2026-09-25 3 FPT 360840000000.00
Giải thích:
Đang tải editor...