Middle
Ар бир транзакция үчүн демалыс жана майрам күндөрүн эске алуу менен эң жогорку валюта курсу датасы менен суроону кантип ишке ашыруу керек?
sobes.tech AI
AIден жооп
Ар бир транзакция үчүн, демалыш күндөрү жана майрамдарды эске алуу менен, эң акыркы датадагы валюта курсу тандалат:
- Курстар үчүн таблица болушу керек, анда курс болгон күндөр көрсөтүлгөн.
- Календар таблицасы болушу керек, анда демалыш күндөрү жана майрамдар белгиленген.
Суроонун идеясы — ар бир транзакция үчүн, транзакция датасынан ашпаган жана иш күнү болгон эң акыркы курс датасын табуу.
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
;
Мындайча, ар бир транзакция үчүн, транзакция датасынан кийин болбогон жана иш күнү болгон эң акыркы курс датасы тандалат.