Я работаю с базой данных блоков данных, и мне нужно написать запрос, который будет возвращать delivery_date предпоследнего заказа всех пользователей (таким образом, предпоследний delivery_date).У меня есть все исторические delivery_date для всех пользователей, но меня интересует только предпоследняя delivery_date всех пользователей.
Я постараюсь рассказать вам, ребята, о том, чего я пытаюсь достичь, используя упрощенный пример.
Когда я запускаю приведенный ниже код для одного пользователя.
SELECT delivery_date_local
FROM order.orders
WHERE lower(customer_login_visits) = '<my-email-here>@gmail.com'
Я получаю следующие результаты:
Delivery_date_local
2019-03-22
2019-03-22
2019-03-22
2019-03-22
2019-03-21
2019-03-20
Что я хочу, так это предпоследняя delivery_date_local для этого пользователя(и всех остальных пользователей), который в данном случае является 2019-03-22, но будет другим, если у пользователя не будет более одного заказа в тот же день.
Это запрос, к которому я выполняюполучить желаемые результаты, основанные на запросе, который я нашел в переполнении стека .
SELECT
DISTINCT(customer_login),
MAX (delivery_date_local) as Last_order_date,
MAX(case when seqnum = 2 then delivery_date_local end) as Penultimate_order_date
FROM (
SELECT
DENSE_RANK() OVER(PARTITION BY customer_login_visits DESC) as seqnum
FROM order.orders
)order.orders
WHERE seqnum IN (1,2)
GROUP BY customer_login_visits
Но я получаю следующую ошибку:
Ошибка вОператор SQL: ParseException:
несоответствующий ввод 'from' ожидаемый (строка 5, позиция 0)
Select distinct (customer_login),
MAX(delivery_date_local) as Last_order_date,
max(case when seqnum = 2 then
delivery_date_local end) as Penultimate_order_date
from (select
^^^
Я прочитал несколько постов в Интернете и пробовал разные запросы, но, похоже, ничего не работает.