SQL-запрос для объединения двух таблиц и получения повторяющихся записей - PullRequest
0 голосов
/ 14 февраля 2019

Я пытаюсь объединить две таблицы, которые обрабатывают покупки клиентов или намерения покупки, чтобы выяснить, сколько клиентов совершило повторное намерение покупки.

Публикация урезанной версии схемы БДдля задачи:

Ставка

  • id
  • user_id
  • create_at

Заказ

  • id
  • bid_id (необязательно)
  • user_id
  • create_at

Пользователь

  • id
  • create_at

Ставки означают намерение покупки, в то время как Заказы обозначают покупки.Пользователь может быть связан со многими предложениями или заказами.

Таким образом, пользователь может начать с создания предложения, которое затем может быть выполнено, и сгенерировать заказ, или - пользователь может создать заказ без связывания.Ставка.

Ставки напрямую не связаны с заказами, потому что ставка может генерировать много заказов (от одного до многих).

Я пытаюсь написать запрос SQL, который тянет пользователей, которые впервые создалипредложение, которое стало покупкой (то есть имеет запись заказа с bid_id), а затем создало еще одно предложение.

На английском языке клиенты, которые создали предложение, выполнили предложение, а затем разместили новоеПредложение через некоторое время после.

В настоящее время не указано, сделали ли они прямую покупку (Заказ без предложения), или имели невыполненную заявку между выполненной заявкой и новой заявкой.

Основной показатель IЯ пытаюсь подтвердить, что они сделали новую ставку через некоторое время после того, как одна из их предыдущих заявок была выполнена.

Пытаясь решить эту проблему, я былтолько в состоянии получить список пользователей, которые разместили более одной ставки и выполнили хотя бы одну.Но не удалось получить количество повторных пользователей, которые сначала выполнили предыдущую ставку перед размещением новой ставки

1 Ответ

0 голосов
/ 14 февраля 2019

exists приходит на ум для этого типа запроса:

select o.*
from orders o
where bid_id is not null and
      exists (select 1
              from bids b
              where b.user_id = o.user_id and b.created_at > o.created_at
             );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...