数据集如下所示:
该表还没有 sum(segLength),但可以通过将sum(segLength) from road_table group by roadID
A roadID
(ei Lake Street) 属于 a roadType
(ei St) 并由路段组成(segID
对于给定的路障,ei 为 2005)来计算。
我想绘制按道路长度分组的道路平均速度,进一步按道路类型分组,如下面的示例输出所示。
如何为每个添加列roadType
,在每个roadType
组中将道路放入箱中,在每个箱中计算平均值maxSpeed
?
我正在使用 PL/SQL。如有必要,我可以翻译来自 MySQL 或 PostgreSQL 的查询。
也许以下想法将为您提供开发查询的起点。我们首先需要一些测试数据。您问题中的最后一个 SEGID 是:4007。在示例中,我们使用的表包含 4500 个随机 SEGLENGTH、ID、最大速度等,与您所描述的类似(在您的示例表中)。
TEST 表和数据 (Oracle 12c)
TEST 表:前 5 行,后 5 行
要将 SEGLENGTH 划分为“桶”,您可以使用 WIDTH_BUCKET()(参见文档),并使用 GROUP BY 找到每个“桶”的平均速度。
将 PIVOT() 添加到此查询中,以便将 ROADTYPES 转换为列,并使用 ROUND() 或 TRUNC() 获取最终值。
要获得标准偏差值,只需使用 STDDEV() 而不是 AVG()。