这里是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;
这两个代码都应该找到每个车站的平均行程持续时间。根据我的理解,第一个代码基本上与第二个代码执行相同的操作,但使用子查询。事实证明我错了,因为这两段代码的结果是不同的。我在这里没有看到什么?
第一段代码是问题的实际正确答案。我尝试在不使用子查询的情况下解决这个问题,因为这是一个非常简单的问题。您必须找出每个车站的平均行程持续时间。根据我的理解,你只需使用AVG函数找出平均行程持续时间,然后按车站ID对其进行分组即可。但这两种代码的结果却截然不同。对于我的一生,我无法理解为什么。
非常感谢任何帮助, 谢谢你。
在您的 SELECT 语句中,您在两个查询中似乎没有使用完全相同的表,这可能是结果不同的原因
FROM bigquery-public-data.new_york_citibike.citibike_trips
FROM bigquery-public-data.new_york.citibike_trips