Sobes.tech
Middle

Hafta sonları ve tatiller dikkate alınarak her işlem için en yüksek kur tarihini içeren sorgu nasıl uygulanır?

sobes.tech yapay zeka

AI'dan gelen yanıt

Her işlem için, hafta sonları ve resmi tatilleri dikkate alarak, en yüksek tarihe sahip kuru seçen sorguyu uygulamak için:

  1. Kurların tarihlerini gösteren bir tabloya sahip olmak.
  2. Hafta sonları ve resmi tatillerin işaretlendiği bir takvim tablosuna sahip olmak.

Sorgunun amacı — her işlem için, işlem tarihini aşmayan ve çalışma günü olan en yüksek kuru tarihini bulmaktır.

SQL örneği (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 şekilde, her işlem için, işlem tarihinden sonra olmayan ve çalışma günü olan en yüksek kuru tarihi seçilir.