sql - 同一个键有 2 个不同的值
问题描述
我的桌子:
booking_id
arrivel_time
departure_time
date
我的情况是,对于同一个键(booking_id),我有 2 条记录 - 第一条在到达时间和出发时间上为空,第二条在到达时间和出发时间上的值(日期和时间)或仅在到达时间。
如果发生,我只想选择 booking_id 与值一起的记录。
我正在为如何选择它而苦苦挣扎,你能解释一下如何实现这一点吗?
你可以在这里看到我想要的结果的一个例子
解决方案
一种方法使用row_number()
:
select t.*
from (select t.*,
row_number() over (partition by booking_id order by arrival_time nulls last) as seqnum
from t
) t
where seqnum = 1;
在旧版本的 Hive 中,您可以使用:
select t.*
from (select t.*,
row_number() over (partition by booking_id
order by (case when arrival_time is not null then 1 else 2 end)
) as seqnum
from t
) t
where seqnum = 1;
推荐阅读
- groovy - Gremlin 根据其元属性检索多个属性
- typescript - ESLint 在 Visual Studio 2017 或 2019 中不起作用
- javascript - 使用 JavaScript 从二维数组中搜索单词
- javascript - jQuery:如果包含空子跨度,则将类添加到父 div
- time-series - 将大量传感器数据发送到 QuestDB 中哪种方法更快或更好?
- sql - SQL Query - 查找唯一数据条目的数量
- swift - NSTextField、文本选择和鼠标事件
- reactjs - nginx 上 Cloudflare、ExpressJS 和 ReactJS 的 CORS 错误
- swiftui - 如何从另一个视图更新类中的结构?(迅速)
- google-photos-api - 什么是 Google Photo API 相册和分享照片 URL 模式?