SQL in a nutshell (2)
另一个常见的数据库任务是聚合。也就是把数据拆分成若干块,并对每一块进行汇总。
在 SQL 中,这通过 GROUP BY 命令完成。该命令按组拆分数据,并将 SELECT 语句中的函数应用到每个分组。
例如,如果您想统计每个始发地的航班数量,可以使用以下查询:
SELECT COUNT(*) FROM flights
GROUP BY origin;
GROUP BY origin 告诉 SQL:输出中应包含 origin 列每个唯一值的一行。SELECT 语句则选择要填充到各列中的值。这里,我们想对每个分组中的每一行进行 COUNT()。
可以按多列进行 GROUP BY。这样做时,结果表会为每个列中唯一值的组合生成一行。下面的查询统计了从 SEA 和 PDX 飞往各个目的地机场的航班数量:
SELECT origin, dest, COUNT(*) FROM flights
GROUP BY origin, dest;
输出会包含 origin 与 dest 各取值的所有组合对应的一行(即列出每个始发地与目的地的组合)。同时还会有一列给出每个分组中所有行的 COUNT()。
如果需要更深入地学习 SQL,可以查看这里。
这个查询会得到什么信息?请记住,flights 表包含 2014 和 2015 年从 PDX 与 SEA 起飞的航班信息。注意,AVG() 函数用于获取某列的平均值!
SELECT AVG(air_time) / 60 FROM flights
GROUP BY origin, carrier;
本练习是课程的一部分
