Таблица:
Date shopId amount
17-MAY-19 1 100
17-MAY-19 2 20
16-MAY-19 2 20
17-APR-19 1 50
Мне нужно найти эти записи той же таблицы в соответствии с требованиями:
По заданной дате, например, sysdate, найти запись с этой датой для каждого shopId(дата уникальна для каждого shopId), а также запись до 30 дней.
Сравните количество двух записей, чтобы увидеть, больше ли абсолютное значение% diff больше 5 (я использую 0,05 вместо% в приведенном ниже коде).
Если обе записи существуют, и% diff совпадает, запись должна быть в наборе результатов.
Сделайте это для всех shopId
с и вернуть набор результатов.
Я могу извлечь записи и затем выполнить сравнение на внутренних языках, таких как JAVA и PHP, но мне интересно, лучше ли это делать с помощью SQL, с которым я не знаком.
select *
from table t1
inner join table t2 on t1.shopId = t2.shopId
WHERE t1.ordertime = sysdate
and t2.ordertime = sysdate - 30
and abs( (t1.amount - t2.amount) / t2.amount > 0.05 )
Ожидаемый результат должен быть:
Table:
shopId Date1 amount1 Date2 amount2
1 17-MAY-19 100 17-APR-19 50
Пожалуйста, помогите, спасибо.