С учетом приведенной ниже таблицы данных:
ID NAME DATE_FROM DATE_TO PRICE
1 AAA 09.10.2018 16:00 10.10.2018 16:00 4
2 AAA 10.10.2018 16:00 11.10.2018 16:00 5
3 BBB 10.10.2018 16:00 11.10.2018 16:00 6
4 CCC 09.10.2018 16:00 01.01.2019 00:00 7
5 AAA 11.10.2018 16:00 01.01.2019 00:00 7
6 BBB 11.10.2018 16:00 01.01.2019 00:00 5
Каждый элемент (AAA, BBB, CCC) имеет цену, действительную между двумя указанными датами.Изменения цены, если таковые имеются, всегда начинаются и заканчиваются в 16:00.Я могу получить текущие цены с:
SELECT *
FROM Items
WHERE DATE_FROM < '11.10.2018 16:00' and DATE_TO >= '11.10.2018 16:00';
и ценами, которые действительны после 16:00 с
SELECT *
FROM Items
WHERE DATE_FROM <= '11.10.2018 16:00' and DATE_TO > '11.10.2018 16:00';
Мне нужны только действительные цены после 4 часов, но я должен различать увеличенныеи снижение цен по сравнению с текущей ценой.На данный момент я делаю это в Java (получить текущие цены и будущие цены, сохранить их в двух списках и сделать сравнение).Можно ли получить все строки, которые имеют действительную цену после 16:00, но только если цена увеличивается с помощью некоторого подвыбора?
SELECT *
FROM Items
WHERE DATE_FROM <= '11.10.2018 16:00' and DATE_TO > '11.10.2018 16:00'
and price >(select somehow current price???);
, чтобы получить только
5 AAA 11.10.2018 16:00 01.01.2019:00 7
, поскольку цена дляBBB уменьшается, а CCC не изменяется.