#sql
#sql
Вопрос:
как получить номер клиента, который подпадал под категорию до 7/31, но не попал в 8/1?
select customer_number
from table
where
purchased = 'a'
and date = '07-31-2020'
Предположим, у меня есть данные до 8/31/2020.
Я хочу получить список номеров клиентов, которые приобрели ‘a’ до 7/31, но не приобрели после этого
Комментарии:
1. Обычно вам нужны даты ISO 8601 , как в
YYYY-MM-DD
, хотя бы для того, чтобы их можно было отсортировать.2. Образцы данных и желаемые результаты действительно помогли бы. Вам нужен клиент, если последняя покупка приходится на 2020-07-30? Что, если клиент приобрел что-то другое после вашей даты? Ваш вопрос не ясен.
Ответ №1:
Вы можете попробовать следующее —
select customer_number
from table where purchased = 'a'
group by customer_number
having max(date)='07-31-2020'
Комментарии:
1. Спасибо за ваш ответ. Существует другой вариант. как получить номер клиента, который подпадал под категорию до 8/1, но не на 8/31?
2. @user14263992 помогло ли это вам?
3. будет ли это правильной логикой для варианта? выберите customer_number из таблицы, в которой purchased = ‘a’ группируется по customer_number, имеющему max (date) =’08-1-2020′
4. @user14263992, да, кажется, так
5. Исходя из вашей логики, кто купил ‘a’ до 7/31 , это должно быть
having max(date) <= date '2020-07-31'
Ответ №2:
Я бы использовал условие NOT EXISTS:
select t1.*
from the_table t1
where purchased = 'a'
and not exists (select *
from the_table t2
where t2.customer_number = t1.customer_number
and t2.date > date '2020-07-31');