Я думаю, что самый простой запрос:
SELECT u.user_id, u.Phone, SUM(Price) AS TotalPrice
FROM users u JOIN
purchases p
ON u.user_id = p.user_id
GROUP BY u.user_id, u.phone
HAVING MIN(p.purchase_date) >= '2017-01-01' AND
COUNT(*) > 3;
Первое условие HAVING
проверяет, что самая ранняя дата покупки - 2017-01-01 или позже. Второй проверяет, что есть как минимум три покупки На самом деле, это предполагает, что users.user_id
уникален, но это разумное предположение.