У меня есть оператор basi c select, который показывает клиентов, у которых есть семидневные бесплатные пробные версии:
select customer_id from purchases where description = '7 Day Free Trial'
Этот же идентификатор клиента может также иметь дополнительные описания в покупках, указывающие, что они купили подписку для в месяц, 6 месяцев, один год, а также другие варианты.
Если для customer_id есть description = '7 Day Free Trial', то мне нужно выбрать все строки для этих идентификаторов клиентов. Я хочу, чтобы эти строки не считали их.
Я знаю, как найти строки, в которых customer_id находится в таблице покупок более одного раза, с помощью этого запроса
SELECT *
FROM purchases WHERE customer_id IN
(
SELECT customer_id
FROM purchases
GROUP BY customer_id
HAVING COUNT(*) > 1)
ORDER BY customer_id ASC
, который дает:
customer_id status description
12321 credit 7 Day Free Trial
12321 paid 1 Month Paid Subscription
78651 credit 6 Month Paid Subscription
78651 refund 6 Month Paid Subscription
45234 paid 30 Day Free Trial
45234 credit 1 Year Paid Description
Но я изо всех сил пытаюсь понять, как подойти к проблеме, где, если у клиента _id есть description = '7 Day Free Trial', выбрать все строки для этого идентификатора клиента.
Пример желаемого результата:
customer_id description
12321 7 Day Free Trial
12321 1 Month Paid Subscription
78651 7 Day Free Trial
78651 1 Year Paid Description
45234 7 Day Free Trial
45234 6 Month Paid Subscription
Любые предложения приветствуются. Я просто не знаю, как к этому подойти.