Я использую консоль Amazon Athena, которая использует presto. Я использовал следующее предложение WITH
, чтобы получить только самую раннюю запись для каждого покупателя, который купил велосипед в таблице "product_delivery
":
WITH t1 AS
(SELECT customer_code, product_type, date_stamp
FROM "products"."product_delivery" f1
WHERE product_code like '%bike%'
AND date_stamp = (SELECT MAX(date_stamp)
FROM "products"."product_delivery" f2
WHERE f1.product_code=f2.product_code)
)
Затем я попытался найти тех же клиентов в исходной таблице доставки, которые покупали перчатки на дату позже даты, когда они получили свой первый велосипед:
SELECT *
FROM "products"."product_delivery" f3
WHERE customer_code IN (SELECT customer_code from t1)
AND product_code like '%gloves%'
AND (f3.date_stamp>t1.date_stamp WHERE f3.customer_code=t1.customer_code)
Когда я это делаю, я получаю сообщение об ошибке «column t1.date_stamp», которое невозможно устранить, даже если я создал t1 со столбцом date_stamp
чуть выше.
Как можно сравнить данные из таблицы с данными в таблице, созданной с помощью предложения WITH
? Существует ли другой синтаксис для указания столбца, когда таблица составлена с предложением WITH
?