у меня есть 1 таблица с именем order_star_member , в этой таблице содержится users_id в качестве пользователей, createAt в качестве даты транзакции и total_price_star_member в качестве суммы транзакции каждого users_id. Первым, кого я хочу узнать, являются идентификаторы пользователей, которые становятся звездными, звездный участник - это users_id, которые совершают транзакции> = 600.000 в месяц. во-вторых, я хочу сгруппировать звездного участника в феврале 2020 года и группировать его в зависимости от того, откуда звездный член пришел из месяца, вот мой синтаксис
select count(distinct osm1.users_id) as jml_buyer, year(osm1.createdAt), month(osm1.createdAt) from order_star_member osm1
where osm1.createdAt >= MAKEDATE(year(osm1.createdAt), 1) + INTERVAL month(osm1.createdAt) month - interval 1 month
AND
osm1.createdAt <= MAKEDATE(YEAR(osm1.createdAt), 1) + INTERVAL month(osm1.createdAt) month- INTERVAL 1 day
AND not EXISTS (select distinct(osm2.users_id) from order_star_member osm2 where osm1.users_id = osm2.users_id
and osm2.createdAt < MAKEDATE(YEAR(osm1.createdAt), 1) + INTERVAL month(osm1.createdAt) month- INTERVAL 1 month)
and exists (select distinct(osm3.users_id) from order_star_member osm3 where osm1.users_id = osm3.users_id
and osm3.createdAt >= '2020-02-01'
and osm3.createdAt < '2020-03-01') group by month(osm1.createdAt) having sum(osm1.total_price_star_member) >= 600000;
и вот моя скрипка
https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=ee605f652628518cbf5a1bf121a46360
это фиктивные данные
+----------+----------+------+-------------------------+
| users_id | month | year | total_price_star_member |
+----------+----------+------+-------------------------+
| 1 | January | 2019 | 60.000 |
| 1 | February | 2019 | 200.000 |
| 2 | January | 2019 | 300.000 |
| 2 | January | 2019 | 400.000 |
| 1 | January | 2019 | 350.000 |
| 3 | January | 2019 | 300.000 |
| 3 | February | 2019 | 600.000 |
| 4 | February | 2019 | 650.000 |
+----------+----------+------+-------------------------+
, поэтому ожидаемые результаты, если я хочу узнать статистику c количества звездных членов за февраль месяца, будут такими:
+------+-------+-----------------+
| year | month | count(users_id) |
+------+-------+-----------------+
| 2019 | 1 | 0 |
| 2019 | 2 | 2 |
+------+-------+-----------------+
объяснение: так, исходя из этого манекена, статистика c месяца февраль примерно такая: 0 users_id из января, потому что нет user_id, у которого была транзакция> = 600.000 в январе, который также делал транзакцию> = 600 000 в феврале и 2 users_id от февраля, которые совершают транзакцию> = 600 000 в феврале (users_id 3 и 4)