【问题标题】:Oracle SQL - Calculating days passed by different user IDsOracle SQL - 计算不同用户 ID 所经过的天数
【发布时间】:2018-01-24 09:19:21
【问题描述】:

我迫切需要你的一些帮助来解决我现在遇到的一个 SQL 问题。

我有一个非常简单的表格,由两列组成:客户编号和采购日期。

我想再添加一列来显示每个客户# 自上一个采购日期以来已经过去了多少天。以下是我当前创建起始表的查询。

select client_id, purchasing_date
from sales.data

结果看起来像这样(显然,我需要更多的声誉来发布图片): https://imgur.com/a/IP1ot

右侧突出显示的列是我要创建的列。 基本上,这显示了自每个客户 # 的上一个购买日期以来经过的天数。每个客户的第一次购买,它只是0。

我不确定我的解释是否足以帮助你们制定解决方案 - 如果您有任何问题,请告诉我。

谢谢!

【问题讨论】:

标签: sql oracle


【解决方案1】:

使用lag():

select client_id, purchasing_date,
       (purchasing_date -
        lag(purchasing_date, 1, purchasing_date) over (partition by client_id
                                                       order by purchasing_date
                                                      )
       ) as day_diff
from sales.data

【讨论】:

  • 顺便说一句,我必须删除滞后括号中的 purchase_date 才能使其正常工作。
  • @SanK,第三个参数是可选的默认值,如果没有先前的记录则返回。如果您不提供,则默认为 NULL,这将导致 day_diff 变为 NULL 而不是零 (0)。
猜你喜欢
  • 1970-01-01
  • 2019-02-17
  • 1970-01-01
  • 1970-01-01
  • 2020-01-12
  • 1970-01-01
  • 2022-12-13
  • 1970-01-01
  • 2020-10-21
相关资源
最近更新 更多