Sobes.tech
Middle

Hər bir əməliyyat üçün həftəsonları və bayramlar nəzərə alınmaqla ən yüksək məzənnə tarixi ilə sorğunu necə həyata keçirmək olar?

sobes.tech Süni İntellekt

AI-dan cavab

Hər əməliyyat üçün, həftə sonları və bayramlar nəzərə alınmaqla, maksimum tarixə malik kursu seçmək üçün:

  1. Valyuta kursları üçün cədvələ sahib olmaq, burada kursun keçərli olduğu tarixlər göstərilir.
  2. Təqvim cədvəli olmalıdır, burada həftə sonları və bayramlar qeyd olunub.

Sorğunun ideyası — hər əməliyyat üçün, əməliyyat tarixindən çox olmayan və iş günü olan maksimum kurs tarixini tapmaqdır.

SQL nümunəsi (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
;

Bu şəkildə, hər əməliyyat üçün, əməliyyat tarixindən sonra olmayan və iş günü olan ən yüksək kurs tarixi seçilir.