В настоящее время у меня есть таблица заказов, которая выглядит следующим образом:
purchase_date | item_id | item_name | user_id
2/3/2020 | 123 | abc | 987
3/3/2020 | 123 | abc | 987
3/3/2020 | 123 | abc | 876
3/3/2020 | 234 | bcd | 987
...
Я пытался создать оператор SQL, который будет возвращать что-то подобное, выполняя подсчет (отличный user_id):
purchase_date | item_id | item_name | number of buyers new to item
2/3/2020 | 123 | abc | 1
3/3/2020 | 123 | abc | 1
3/3/2020 | 234 | bcd | 1
Конечно, в таблице заказов будет несколько item_ids.
Я пытаюсь добиться того, чтобы получить скользящее число покупателей, которые никогда не покупали этот конкретный c Элемент до в каждый день.
Например, на основе приведенного выше примера таблицы заказов, есть 1 покупатель один 2/3/2020 и 2 покупателя 3/3/2020. Однако User_id 987 купил этот же товар 3/3/2020, поэтому я не хочу считать этого пользователя, поэтому конечным результатом для 3/3/2020 должен быть только 1 пользователь.
User_id 987 будет все еще считается для item_id 234, так как этот пользователь не покупал этот элемент ранее в таблице заказов.
Элементы в таблице заказов будут обновляться каждый понедельник, поэтому я пытаюсь создать запрос, который будет ежедневно и возвращаться меняются постоянные числа покупателей, которые являются новыми для каждого конкретного элемента c (т.е. не покупали его раньше) с понедельника по воскресенье.
Это концепция использования CROSS JOIN, или временных таблиц, так или иначе, или это более сложная идея, чем я ожидал, для выполнения ее в SQL формате запроса?
Спасибо!