【问题标题】:SQL - Selecting rows with a specific column value in the row after itSQL - 在其后的行中选择具有特定列值的行
【发布时间】:2020-12-01 06:20:21
【问题描述】:

我只考虑在紧随其后的行中具有特定值时才选择列。

以如下数据框为例:

Date           ID             Symbol
2020-06-05     C              AAPL
2020-06-05     U              AAPL 
2020-06-06     R              AAPL

我想对其进行编码,所以我只返回第二行 I,因为它后面是 'ID' 行中的一个 'R'

目前我正在使用以下代码结构来预先检查值。我想知道是否可以改变类似的东西以潜在地适用于此。

select t.* from table t
where not exists (
  select 1 from table
  where id < t.id and val > t.val)  

谢谢

【问题讨论】:

  • 您的示例有两个“第一行”和一个“第三行”。那里没有“第二行”。行没有固有的顺序,除非您指定排序标准。
  • SQL 表代表 无序 集合。 “后跟'R'”适用于两行,而不是一行。

标签: sql presto


【解决方案1】:

您在数据中有联系。让我假设日期确实有时间分量,所以这不是问题。

在这种情况下,您可以使用lead():

select t.*
from (select t.*, lead(id) over (partition by symbol order by date) as next_id
      from t
     ) t
where next_id = 'R';

【讨论】:

    猜你喜欢
    • 2011-07-04
    • 2021-12-11
    • 1970-01-01
    • 2015-11-21
    • 2019-07-06
    • 1970-01-01
    • 2016-10-12
    • 1970-01-01
    相关资源
    最近更新 更多