意外结果 SQL 子查询

问题描述 投票:0回答:1

这里是SQL菜鸟,我有两段代码基本上应该做同样的事情,但是它们的结果不同,我不明白为什么。

这是第一个代码:

SELECT
    subquery.start_station_id,
    subquery.avg_duration
FROM
    (
    SELECT
        start_station_id,
        AVG(tripduration) as avg_duration
FROM bigquery-public-data.new_york_citibike.citibike_trips
GROUP BY start_station_id) as subquery
ORDER BY avg_duration DESC;

这是第二个代码:

SELECT
  start_station_id,
  AVG(tripduration) as avg_duration
FROM
  bigquery-public-data.new_york.citibike_trips
GROUP BY
  start_station_id
ORDER BY
  avg_duration DESC;

这两个代码都应该找到每个车站的平均行程持续时间。根据我的理解,第一个代码基本上与第二个代码执行相同的操作,但使用子查询。事实证明我错了,因为这两段代码的结果是不同的。我在这里没有看到什么?

This is the table being used

This is the result of the first code

This is the result from the second code

第一段代码是问题的实际正确答案。我尝试在不使用子查询的情况下解决这个问题,因为这是一个非常简单的问题。您必须找出每个车站的平均行程持续时间。根据我的理解,你只需使用AVG函数找出平均行程持续时间,然后按车站ID对其进行分组即可。但这两种代码的结果却截然不同。对于我的一生,我无法理解为什么。

非常感谢任何帮助, 谢谢你。

sql google-bigquery subquery data-analysis
1个回答
0
投票

在您的 SELECT 语句中,您在两个查询中似乎没有使用完全相同的表,这可能是结果不同的原因

FROM bigquery-public-data.new_york_citibike.citibike_trips

FROM bigquery-public-data.new_york.citibike_trips

© www.soinside.com 2019 - 2024. All rights reserved.