У меня есть набор данных, который содержит название продукта, номер заказа и время размещения заказа.
prod_name,order_no,order_time
a,101,2018-05-01
a,102,2018-06-04
a,103,2018-05-03
b,104,2018-01-21
b,105,2018-01-11
Я пытаюсь создать отчет, который показывает время с первого порядка (по сравнению с текущим временем) с выводом, как показано ниже:
prod_name,time_since_first_sale,aging
a,64,Less than 3 months back
b,177,Less than 6 months back
Ниже приведен SQL, который я использую:
select DISTINCT b.prod_name,case when((CURRENT_TIMESTAMP - min(a.order_time))) < '90' THEN 'Less than 3 months'
when ((CURRENT_TIMESTAMP - min(order_time))) < '180' THEN 'Less than 6 months'
else 'Other' end as aging
from sales a, prod b where a.id=b.prod_id;
Приведенный выше SQL возвращает дубликаты, полагайте, что он также учитывает каждый sale_id в таблице продаж. Как я мог изменить вышеупомянутый запрос, чтобы получить только одну запись для prod_name. Однако, если я уберу заявление с делом, дубликатов там не будет. Может ли кто-нибудь помочь в том, что я делаю неправильно, что вытягивает эти дубликаты.
Я использую Amazon Redshift DB.
Спасибо ..