SQL - Сравнение временных меток из разных таблиц

Первый пост здесь, так что я надеюсь, я не буду спрашивать что-то слишком глупое, на которое уже дан ответ!

У меня есть следующие базы данных, как видно на картинках.

exchange_rates

операции

Для моего первого задания мне нужно было выполнить следующее:

  1. Запишите запрос, который дает нам разбивку расходов в фунтах стерлингов по каждому пользователю. Используйте обменный курс с наибольшей отметкой времени.

И я чувствую, что я решил это правильно с этим запросом. Если у вас есть возражения, дайте мне знать.

QUERY_1

Редактировать: вот команда, которую вы можете отформатировать соответственно.

SELECT user_id,SUM(amount*CASE
WHEN currency='USD' THEN (SELECT rate FROM exchange_rates WHERE 
from_currency='USD' AND to_currency='GBP' AND 
(ts=(SELECT MAX(ts) FROM exchange_rates 
     WHERE from_currency='USD' AND to_currency='GBP'))) 
WHEN currency='EUR' THEN 
     (SELECT rate FROM exchange_rates WHERE 
from_currency='EUR' AND to_currency='GBP' AND 
(ts=(SELECT MAX(ts) FROM exchange_rates 
     WHERE from_currency='EUR' AND to_currency='GBP'))) 
WHEN currency='GBP' THEN 1 END) as total_spent_gbp FROM transactions GROUP BY user_id ORDER BY user_id

Для моей второй задачи я должен реализовать следующее изменение:

  1. Запишите тот же запрос, но на этот раз используйте последний обменный курс, меньший или равный метке времени транзакции.

Любые идеи о том, как это возможно? Я пытался работать с синтаксисом table.column, и он не работает правильно. Кроме того, когда я работаю с подзапросами, я сравниваю столбцы разных размеров. Любопытно посмотреть, что ты думаешь. Заранее спасибо.

0 ответов

Другие вопросы по тегам