Middle
Wie implementiert man eine Abfrage mit dem maximalen Kursdatum für jede Transaktion unter Berücksichtigung von Wochenenden und Feiertagen?
sobes.tech KI
Antwort von AI
Um die Abfrage zu implementieren, die für jede Transaktion den Kurs mit dem maximalen Datum auswählt, wobei Wochenenden und Feiertage berücksichtigt werden, benötigt man:
- Eine Tabelle mit den Wechselkursen, in der die Daten angegeben sind, an denen der Kurs gültig war.
- Eine Tabelle mit dem Kalender, in der Wochenenden und Feiertage markiert sind.
Die Idee der Abfrage ist — für jede Transaktion — das maximale Kursdatum zu finden, das das Transaktionsdatum nicht überschreitet und an einem Arbeitstag liegt.
Beispiel in 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
;
Auf diese Weise wird für jede Transaktion der Kurs mit dem maximalen Datum ausgewählt, das nicht später als das Transaktionsdatum ist und an einem Arbeitstag liegt (kein Wochenende, kein Feiertag).