sql - SQL - 在其后的行中选择具有特定列值的行
问题描述
我只在紧随其后的行中具有特定值时才考虑选择列。
使用以下数据框的示例:
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)
谢谢
解决方案
你在数据中有联系。让我假设日期确实有时间分量,所以这不是问题。
在这种情况下,您可以使用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';
推荐阅读
- html - 按钮悬停不做任何事情
- java - 休眠搜索:使用 Ngram 过滤器的索引数据,并且在搜索时由于查询时标记化而给出不正确的结果
- nested - 如何在 Football API 中使用嵌套包含?(解决了)
- c# - 将字符串转换为作为参数传递给 AjaxManager 的数组
- oracle - 错误PLSQL创建过程异常
- apache-kafka - kafka 0.10.2 描述 logdir(每个代理的分区信息)
- sparql - 在 Wikidata 查询服务上获取具有多个可选限定符的多个可选属性
- node.js - NodeJS-PassportJS 给出特定的密码
- html - RMarkdown - 有没有办法在每个标签集之后轻松添加空间?
- c# - c#将资源文件另存为.resx xml文件报错