基于配置表为航班数据集新增newoffsetdirection列的技术需求
航班数据集新增newoffsetdirection列的实现方案
数据集说明
- 主数据集(航班详情)字段:
frictionreportdatetime、offsetdistance、offsetdirection、chainage、measuringspeed、cofvalue - 配置表字段:
runway、oppositeRunway,数据如下:runway oppositeRunway 9 27 14 32
处理逻辑
- 提取配置表首行的
runway值(即9),从主数据集中筛选出offsetdirection = 9的记录块 - 对筛选后的记录,计算两个关键区间阈值:
- 该数据块中
chainage的最小值:min_chainage = MIN(chainage) - 该数据块中
chainage最大值的一半:half_max_chainage = MAX(chainage) / 2
- 该数据块中
- 通过CASE语句生成
newoffsetdirection列:- 当
chainage处于[min_chainage, half_max_chainage]区间时,赋值为'Runway' - 当
chainage处于[half_max_chainage, MAX(chainage)]区间时,赋值为'oppositeRunway'
- 当
示例SQL代码
WITH filtered_data AS ( SELECT *, MIN(chainage) OVER () AS min_chainage, MAX(chainage) OVER () AS max_chainage, MAX(chainage) OVER () / 2 AS half_max_chainage FROM 主数据集表名 WHERE offsetdirection = (SELECT runway FROM 配置表表名 LIMIT 1) -- 取配置表首行的runway值9 ) SELECT frictionreportdatetime, offsetdistance, offsetdirection, chainage, measuringspeed, cofvalue, CASE WHEN chainage BETWEEN min_chainage AND half_max_chainage THEN 'Runway' WHEN chainage BETWEEN half_max_chainage AND max_chainage THEN 'oppositeRunway' END AS newoffsetdirection FROM filtered_data;
补充说明
- 若需处理配置表中其他runway值(如14),只需调整
WHERE子句中取配置表行的逻辑(比如去掉LIMIT 1,改为批量关联处理) - 若数据库不支持窗口函数,可改用子查询单独计算阈值后关联主数据
内容的提问来源于stack exchange,提问作者sona
相关产品推荐
相关产品推荐

