【问题标题】:SQL query for joining two tables and pulling repeated entries用于连接两个表并拉取重复条目的 SQL 查询
【发布时间】:2019-02-14 00:35:50
【问题描述】:

我正在尝试加入两个处理客户购买或购买意向的表,以了解有多少客户做出了重复购买意向。

针对该问题发布一个精简版的数据库架构:

出价

  • 身份证
  • user_id
  • created_at

订购

  • 身份证
  • bid_id(可选)
  • user_id
  • created_at

用户

  • 身份证
  • created_at

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

所以用户可以从 - 创建一个投标,然后可能会被履行,并生成一个订单,或 - 用户可以在没有关联出价的情况下创建订单。

出价与订单没有直接关联,因为一个出价可以生成多个订单(一对多)。

我正在尝试编写一个 SQL 查询,该查询会提取首先创建出价并成为购买的用户(即有一个带有 bid_id 的订单记录),然后再创建另一个出价。

在英语中,客户创建了投标,完成了投标,然后在某个时间提交了新的投标。

目前并不特别关注他们是直接购买(没有投标的订单),还是在已履行的投标和新投标之间有未履行的投标。

我要确认的主要指标是,他们在之前的一个出价完成后的某个时间提出了新的出价。

在尝试解决这个问题时,我只能获得一份用户列表,这些用户提出了多个出价并至少完成了一个出价。但无法获得在下一次新出价之前首先完成之前出价的重复用户的数量

【问题讨论】:

    标签: sql postgresql join


    【解决方案1】:

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

    【讨论】:

    • 谢谢戈登。完全忘记了存在。将查询更新为select count(distinct(o.user_id)) 给出了回头客的数量
    猜你喜欢
    • 2012-07-18
    • 1970-01-01
    • 2018-03-09
    • 2023-03-05
    • 2016-05-27
    • 2011-10-07
    • 2017-07-05
    • 2020-11-10
    相关资源
    最近更新 更多