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

Databricks中嵌套CTE的SQL查询逻辑解析请求

嵌套CTE查询执行逻辑拆解

先把你的查询代码贴出来,方便对应讲解:

WITH lax_bos AS (
  WITH origin_destination (origin_airport, destination_airport) AS (
    SELECT
      origin,
      destination
    FROM
      external_table
  )
  SELECT
    *
  FROM
    origin_destination
  WHERE
    origin_airport = 'LAX'
    AND destination_airport = 'BOS'
)
SELECT
  count(origin_airport) AS `Total Flights from LAX to BOS`
FROM
  lax_bos;

咱们从内到外一步步拆解执行过程:

  • 最内层CTE:origin_destination
    这一步从external_table里取出origin(出发机场)和destination(到达机场)两个字段,同时给它们起别名origin_airport和destination_airport,生成一个临时数据集,里面存着所有航班的出发、到达机场信息。

  • 中层CTE:lax_bos
    这个CTE基于上面的origin_destination临时数据集,添加过滤条件:只保留origin_airport为LAX(洛杉矶机场)且destination_airport为BOS(波士顿机场)的记录,相当于从所有航班里筛选出「洛杉矶飞波士顿」的航班,生成一个仅包含这类航班的临时数据集。

  • 主查询:统计航班总数
    最后一步统计lax_bos数据集中origin_airport的数量,因为每条记录对应一个航班,所以统计结果就是LAX到BOS的总航班数,也就是你看到的684。

其实这个嵌套写法有点冗余,完全可以合并成单个CTE,效果完全一致:

WITH lax_bos AS (
  SELECT
    origin AS origin_airport,
    destination AS destination_airport
  FROM
    external_table
  WHERE
    origin = 'LAX'
    AND destination = 'BOS'
)
SELECT
  count(origin_airport) AS `Total Flights from LAX to BOS`
FROM
  lax_bos;

内容的提问来源于stack exchange,提问作者Jessica Calkins

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 20:03:18