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
;

Έτσι, για κάθε συναλλαγή, επιλέγεται το επιτόκιο με τη μέγιστη ημερομηνία που δεν υπερβαίνει την ημερομηνία της συναλλαγής και που είναι εργάσιμη ημέρα (όχι Σαββατοκύριακο και όχι αργία).