5. 表间关联查询
在文件 meteorolog.txt 中,存储了一些观测站的气象数据;stations.csv 中记录了一些观测站的经纬度和高程数据。请根据这些数据,分别统计 MIN 气温采集到的最低的 100 条记录中,多少条记录来源于高程超过 200 米的观测站,多少条记录来源于纬度超过 40 度的观测站。
参考答案:
解答:
A | B | |
---|---|---|
1 | =T(“meteorolog.txt”) | =file(“stations.csv”).import@ct() |
2 | =A1.id(STATION) | =B1.select(A2.pos(STATION)>0) |
3 | =A1.switch(STATION,B2:STATION) | |
4 | =A3.top(100;MIN) | |
5 | =A4.count(STATION.LATITUDE>40) | =A4.count(STATION.ELEVATION>200) |
A1 和 B1 分别从文件中读取数据,特别的,B1 使用 csv 文件,需要加 @c 选项,表名文件中每行数据的字段之间用逗号分隔。B1 同样可以改为 =T(“stations.csv”),自动识别文件类别。在本例中,B1 记录的站名包含未使用的数据,其中更是包含重复的观测站名称,因此需要先做筛选。A2 从观测数据中获得相关观测站的名称,B2 中在观测站信息表中,筛选出所需数据。A3 用 switch 函数将两表数据关联,用站点信息记录代替 STATION。A4 选出温度最低的 100 条记录,这里 100 后面是分号,说按后面字段排序后,要取回记录本身,相当于 =A3.top(100,MIN,~)。第 5 行据此进一步统计出所需结果。
英文版