vkharseev
@vkharseev
PHP-программист

Как подсчитать количество покупателей которые покупали в одном магазине, а с определенной даты совершили покупку в другом?

Имеется таблица пользователей и таблица заказов. В таблице заказов есть поле: идентификатор магазина. Необходимо посчитать количество пользователей которые до 2016 года все покупки совершали только в магазине id=1, а начиная с 2016 совершили хотя бы одну покупку в любом другом магазине id != 1.
  • Вопрос задан
  • 559 просмотров
Решения вопроса 1
0xD34F
@0xD34F
SELECT count(*)
FROM users u
WHERE
  u.id IN ((
    SELECT o.user_id
    FROM orders o
    WHERE
      o.date < '2016-01-01' AND
      o.shop_id = 1 AND
      o.user_id NOT IN (SELECT user_id FROM orders WHERE shop_id <> 1 AND date < '2016-01-01')
  ) INTERSECT (
    SELECT o.user_id
    FROM orders o
    WHERE o.date >= '2016-01-01' AND o.shop_id <> 1
  ));
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@shushpanio
shushpanio
Напишу алгоритм. Запрос думаю по нему напишите (в SQL могу напутать).
1. получаем список пользователей у которых за период <=2016год id магазина=1 и Distinct count (id)=1 (был только магазин с ID=1)
2. Фильтруем полученный список и выбираем из них пользователей у которых за период >2016 годесть записи с ID<>1
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы