Я пытаюсь увидеть продажи автомобиля за день и создать еще две колонки, в которых указывается количество продаж за последние 10 дней и количество продаж за последние 20 дней. Может быть несколько продаж для одного и того же дня и одного и того же автомобиля. Моя цель - взять «Определенное транспортное средство» и «Дату» и посмотреть их счет продаж.
Количество дней N должно быть относительно даты, представленной в этой строке.
Мои данные выглядят следующим образом:
Vehicle_ID Sales_Date
X500 01/03/2020 02:00:00 PM
X500 01/11/2020 05:00:00 PM
X500 01/25/2020 06:00:00 PM
X500 01/25/2020 01:00:00 PM
X500 02/13/2020 06:00:00 PM
X500 02/21/2020 02:00:00 PM
Моя целевая таблица должна выглядеть следующим образом:
Vehicle_ID Sales_Date Sales_Count Sales_Count_last_10 Sales_Count_last_20
X500 01/03/2020 1 1 1
X500 01/11/2020 1 2 2
X500 01/25/2020 2 2 3
X500 02/13/2020 1 1 4
X500 02/21/2020 1 2 2
Я пробовал следующий запрос:
SELECT TO_DATE(TO_CHAR(Sales_Date, 'MM/DD/YYYY'), 'MM/DD/YYYY') Sales_Date1, Vehicle_ID,
COUNT(*) OVER (PARTITION BY Vehicle_ID, TO_DATE(TO_CHAR(Sales_Date, 'MM/DD/YYYY'), 'MM/DD/YYYY')) SALES_COUNTS,
SUM(CASE WHEN TO_DATE(Sales_Date) BETWEEN TO_DATE(TO_CHAR(Sales_Date, 'MM/DD/YYYY'), 'MM/DD/YYYY') - 10 AND TO_DATE(TO_CHAR(Sales_Date, 'MM/DD/YYYY'), 'MM/DD/YYYY')
THEN 1 ELSE 0 END) OVER (PARTITION BY Vehicle_ID, TO_DATE(TO_CHAR(Sales_Date, 'MM/DD/YYYY'), 'MM/DD/YYYY'))
Sales_Count_last_10,
SUM(CASE WHEN TO_DATE(Sales_Date) BETWEEN TO_DATE(TO_CHAR(Sales_Date, 'MM/DD/YYYY'), 'MM/DD/YYYY') - 20 AND TO_DATE(TO_CHAR(Sales_Date, 'MM/DD/YYYY'), 'MM/DD/YYYY')
THEN 1 ELSE 0 END) OVER (PARTITION BY Vehicle_ID, TO_DATE(TO_CHAR(Sales_Date, 'MM/DD/YYYY'), 'MM/DD/YYYY'))
Sales_Count_last_10
FROM TABLE1
Он просто создал те же значения для Sales_Count, Sales_Count_last_10 и Sales_Count_last_20. Это N-дневные столбцы были просто дубликатами Sales_Count
Я также попробовал следующий запрос.
SELECT TO_DATE(TO_CHAR(Sales_Date, 'MM/DD/YYYY'), 'MM/DD/YYYY') Sales_Date1, Vehicle_ID, COUNT(*) SALES_COUNTS,
SUM(CASE WHEN TO_DATE(Sales_Date) BETWEEN TO_DATE(TO_CHAR(Sales_Date, 'MM/DD/YYYY'), 'MM/DD/YYYY') - 10 AND TO_DATE(TO_CHAR(Sales_Date, 'MM/DD/YYYY'), 'MM/DD/YYYY')
THEN 1 ELSE 0 END) Sales_Count_last_10,
SUM(CASE WHEN TO_DATE(Sales_Date) BETWEEN TO_DATE(TO_CHAR(Sales_Date, 'MM/DD/YYYY'), 'MM/DD/YYYY') - 20 AND TO_DATE(TO_CHAR(Sales_Date, 'MM/DD/YYYY'), 'MM/DD/YYYY')
THEN 1 ELSE 0 END) Sales_Count_last_20
FROM TABLE1
GROUP BY Vehicle_ID, TO_DATE(TO_CHAR(Sales_Date, 'MM/DD/YYYY'), 'MM/DD/YYYY')
Он показал тот же результат, что и предыдущий запрос. Дублирование Sales_Count для столбца N-дней.
Пожалуйста, помогите мне с этой проблемой.