У меня есть данные покупателя в таблице под названием order_star_member , в этой таблице содержится создал в . в этой строке указана дата транзакции, users_id содержит покупателя, а total_price_star_member - сумма транзакции каждого покупателя, поэтому я хочу подсчитать сумму покупателя, совершившего транзакцию> = 600000 в январе, а затем снова выполняю транзакцию в феврале 2020 года для> = 600000, я попытался вставить новую таблицу для самого января и для самого февраля, но это просто трата времени, знаете ли вы, какой точный синтаксис для решения этой проблемы? Я пробовал этот синтаксис, но я не знаю, почему результат был 0, а когда я проверяю руководство, ответ - 5 покупатель, который делает транзакцию в январе для транзакции> = 600000, а также в феврале> = 600000
select count(*) from (SELECT
b.users_id
FROM order_star_member b
WHERE
EXISTS (SELECT 1 FROM order_star_member d
WHERE d.users_id = b.users_id AND
d.createdAt >= '2019-12-01' AND d.createdAt < '2020-01-01') AND
EXISTS (SELECT 1 FROM order_star_member c
WHERE c.users_id = b.users_id AND
d.createdAt >= '2020-01-01' AND d.createdAt < '2020-02-01') AND
NOT EXISTS (SELECT 1 FROM order_star_member e
WHERE e.users_id = b.users_id AND d.createdAt < '2019-12-01') group by users_id having sum(total_price_star_member) >= 600000) inner_query;
пример данных:
январь
- A (транзакция 100000)
- A (транзакция 100000)
- B (транзакция 150000)
- B (транзакция 600000)
Февраль
- A (транзакция 500000)
- C (транзакция 600000)
- B (транзакция 750000)
Ожидаемый результат после выполнения синтаксиса
- количество покупателей, совершивших транзакцию> = 600000 в январь и февраль: 1 (покупатель B)