В моей базе данных SQLite3 у меня есть 2 таблицы, одна с временными метками и количествами, а другая с временными метками и скоростями. Проблема "простая", мне нужно получить хорошие цены в соответствии с количествами и обновленными ставками.
Вот пример этих 2 таблиц:
таблица ставок (содержит пересмотры ставокНапример, с 17 ноября 2012 года и до 16 ноября 2013 года курс изменился до 58,863 c $, снова изменился 17/11/2013 ...):
ts | cts
------------------------
2010-11-17 00:00:00|58.0
2011-11-17 00:00:00|58.636
2012-11-17 00:00:00|58.863
2013-11-17 00:00:00|59.120
...
производственный стол (всего один день в 2012 годуно таблица охватывает 2010 год и по настоящее время):
ts | qty
---------------------------------
...
2012-12-20 07:50:06|130
2012-12-20 08:00:05|130
2012-12-20 08:10:05|120
2012-12-20 08:20:04|130
2012-12-20 08:30:05|360
2012-12-20 08:40:05|230
2012-12-20 08:50:06|250
2012-12-20 09:00:05|310
2012-12-20 09:10:05|180
2012-12-20 09:20:06|270
2012-12-20 09:30:05|300
2012-12-20 09:40:06|290
2012-12-20 09:50:05|580
2012-12-20 10:00:05|260
2012-12-20 10:10:06|210
2012-12-20 10:20:06|350
2012-12-20 10:30:05|410
...
Мне нужно получить правильную ставку в соответствии с отметкой времени в таблице ставок и добавить столбец цен к моему результату
результатзапроса на настройку:
ts | qty | rate | price
---------------------------------
...
2012-12-20 07:50:06|130|58.863|7652.19 (qty * rate)
2012-12-20 08:00:05|130|58.863 ....
2012-12-20 08:10:05|120|58.863
2012-12-20 08:20:04|130|58.863
2012-12-20 08:30:05|360|58.863
2012-12-20 08:40:05|230|58.863
2012-12-20 08:50:06|250|58.863
2012-12-20 09:00:05|310|58.863
2012-12-20 09:10:05|180|58.863
2012-12-20 09:20:06|270|58.863
2012-12-20 09:30:05|300|58.863
2012-12-20 09:40:06|290|58.863
2012-12-20 09:50:05|580|58.863
2012-12-20 10:00:05|260|58.863
2012-12-20 10:10:06|210|58.863
2012-12-20 10:20:06|350|58.863
2012-12-20 10:30:05|410|58.863
...
Я предполагал использовать функцию LEAD, которая появилась в последних выпусках SQLite, но я не знаю, использовать ли ее в объединении.
SELECT * FROM production t1
LEFT JOIN rates t2 ON t1.ts BETWEEN t2.ts AND LEAD(t2.ts,1,0) OVER (ORDER by t2.ts)
Надеюсь, вы можете помочь!