Sobes.tech
Middle

როგორ განვახორციელოთ შეკითხვა მაქსიმალური კურსის თარიღით თითოეული ტრანზაქციისთვის, უქმე დღეებისა და დღესასწაულების გათვალისწინებით?

sobes.tech AI

პასუხი AI-სგან

მიუხედავად იმისა, რომ თითოეული ტრანზაქციისთვის, კვირის დღეებისა და დღესასწაულების გათვალისწინებით, მაქსიმალური თარიღის კურსის არჩევა საჭიროა:

  1. უნდა გქონდეთ ცხრილი ვალუტის კურსებისთვის, სადაც მითითებულია, როდის იყო კურსი აქტიური.
  2. უნდა გქონდეთ კალენდრის ცხრილი, სადაც აღნიშნულია კვირის დღეები და დღესასწაულები.

საკითხის იდეა — თითოეული ტრანზაქციისთვის — იპოვოთ მაქსიმალური კურსის თარიღი, რომელიც არ აღემატება ტრანზაქციის თარიღს და არის სამუშაო დღე.

SQL მაგალითი (PostgreSQL):

WITH working_days AS (
  SELECT date
  FROM calendar
  WHERE is_holiday = FALSE AND is_weekend = FALSE
),
max_course_dates AS (
  SELECT t.transaction_id, MAX(c.date) AS max_course_date
  FROM transactions t
  JOIN courses c ON c.date <= t.transaction_date
  JOIN working_days wd ON c.date = wd.date
  GROUP BY t.transaction_id
)
SELECT t.*, c.rate
FROM transactions t
JOIN max_course_dates mcd ON t.transaction_id = mcd.transaction_id
JOIN courses c ON c.date = mcd.max_course_date
  AND c.currency = t.currency
;

ასე, თითოეული ტრანზაქციისთვის, ირჩევა მაქსიმალური თარიღის კურსი, რომელიც არ აღემატება ტრანზაქციის თარიღს და არის სამუშაო დღე (არ არის შაბათი, კვირა და დღესასწაული).