用于查询两个表并提取重复条目的SQL查询

时间:2019-02-14 00:35:50

标签: sql postgresql join

我正试图合并两个处理客户购买或购买意图的表,以便找出有多少客户进行了重复购买。

发布该问题的精简版数据库架构:

出价

  • id
  • user_id
  • created_at

订购

  • id
  • bid_id(可选)
  • user_id
  • created_at

用户

  • id
  • created_at

出价表示购买意向,而订单表示购买意向。一个用户可能与许多出价或订单相关联。

因此用户可以从 -创建一个出价,然后可以履行该出价,并生成一个订单,或者 -用户可以创建没有关联出价的订单。

出价与订单不直接相关,因为出价可以生成许多订单(一对多)。

我正在尝试编写一个SQL查询,以拉出首先创建一个成为要购买的Bid(即,具有Order_id的Order记录)然后在此之后创建另一个Bid的用户。

使用英语,创建出价,履行出价并在此后的某个时间下达新出价的客户。

目前还不确定他们是直接购买(无出价的订单),还是在已完成的出价和新的出价之间有未完成的出价。

我要确认的主要指标是,在他们之前的一个出价被满足后的某个时候,他们提出了新的出价。

在尝试解决此问题时,我仅能获得列出了多个出价且至少已实现一个出价的用户的列表。但是无法获得在设置新出价之前首先满足先前出价的重复用户的数量

1 个答案:

答案 0 :(得分:0)

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
             );