You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用PROC SQL提取延误次数最少的出发机场异常问题排查

解决SAS Proc SQL计算最少延误次数机场的问题

看起来你在统计各机场延误次数时遇到了逻辑偏差,导致所有机场返回了相同的结果,我来帮你梳理问题并修正代码:

问题根源

你的代码存在两个关键错误:

  • 字段名不匹配:原数据集里的延误字段是Dep_delay_min,但你写的是Departure_delay_minutes,这会导致子查询无法正确筛选出延误记录;
  • 子查询缺少分组逻辑:子查询里没有Group by Origin,所以Count(...)统计的是所有机场延误记录的总和,而非每个机场各自的延误次数,最终外层查询拿到的每个机场对应的都是同一个总和值;
  • 额外小问题:原数据集名是Flights,你写的是Flight(少了字母s),这会导致SAS找不到目标表。

修正后的代码

分步实现(更易理解)

Proc sql;
  /* 第一步:先统计每个机场的延误次数 */
  Create table airport_delay_counts as
  Select 
    Origin,
    Count(*) as Number_of_delays
  from Flights
  Where Dep_delay_min > 0  /* 仅统计延误(延误分钟数为正)的记录 */
  Group by Origin;  /* 按机场分组计算 */

  /* 第二步:筛选出延误次数最少的机场 */
  Create table least_delay as
  Select 
    Origin,
    Number_of_delays as min_delay
  from airport_delay_counts
  Where Number_of_delays = (Select min(Number_of_delays) from airport_delay_counts);
Quit;

合并为单条SQL语句(更简洁)

Proc sql;
  Create table least_delay as
  Select 
    Origin,
    Number_of_delays as min_delay
  from (
    Select 
      Origin,
      Count(*) as Number_of_delays
    from Flights
    Where Dep_delay_min > 0
    Group by Origin
  ) as delay_counts
  Where Number_of_delays = (Select min(Number_of_delays) from delay_counts);
Quit;

针对你的样本数据验证

手动统计样本里各机场的延误次数:

  • EWR:仅1条延误记录(Dep_delay_min=1)
  • LGA:仅1条延误记录(Dep_delay_min=8)
  • JFK:共4条延误记录(Dep_delay_min=6、3条Dep_delay_min=42)

运行修正后的代码后,least_delay表会返回EWR和LGA,它们的延误次数均为1,是样本中最少的。

内容的提问来源于stack exchange,提问作者Aman kashyap

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 03:57:46