Сначала во внутреннем t
мы группируем по месяцам, чтобы определить всех звездных членов.
Внешние группировки групп по user_id. Их оценка равна сумме их star_member.
Для февраля (m = 2 (февраль - второй месяц) в первой строке запроса ниже), если они являются star_member, они получают штраф (-100 ) как произвольное значение, которое SUM
не может преодолеть.
Единственный способ, которым month_score=2
может существовать, если пользователь имеет значение star_member, равное true (1) для января и марта, но не для февраля.
SELECT users_id, SUM(IF(m=2 and star_member, -100, star_member)) as month_score
FROM
(SELECT users_id,
MONTH(createdAt) as m,
SUM(total_price_star_member) >= 600000 as star_member
FROM order_star_member
WHERE createdAt BETWEEN '20190101' AND '20190331'
GROUP BY users_id, m
) t
GROUP BY users_id
HAVING month_score=2
скрипка