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
;

Мындайча, ар бир транзакция үчүн, транзакция датасынан кийин болбогон жана иш күнү болгон эң акыркы курс датасы тандалат.