SQL - Сравнение временных меток из разных таблиц
Первый пост здесь, так что я надеюсь, я не буду спрашивать что-то слишком глупое, на которое уже дан ответ!
У меня есть следующие базы данных, как видно на картинках.
Для моего первого задания мне нужно было выполнить следующее:
- Запишите запрос, который дает нам разбивку расходов в фунтах стерлингов по каждому пользователю. Используйте обменный курс с наибольшей отметкой времени.
И я чувствую, что я решил это правильно с этим запросом. Если у вас есть возражения, дайте мне знать.
Редактировать: вот команда, которую вы можете отформатировать соответственно.
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
Для моей второй задачи я должен реализовать следующее изменение:
- Запишите тот же запрос, но на этот раз используйте последний обменный курс, меньший или равный метке времени транзакции.
Любые идеи о том, как это возможно? Я пытался работать с синтаксисом table.column, и он не работает правильно. Кроме того, когда я работаю с подзапросами, я сравниваю столбцы разных размеров. Любопытно посмотреть, что ты думаешь. Заранее спасибо.