首页 > 解决方案 > 选择 SQL (Redshift) 分组中的第一行数值

问题描述

我有一个以下结构的表:

ID    latitude   longtitude   other..columns
A12    54.55        -43.26       .
A21    57.00        -43.25       .
V51    54.55        -44.25       .
V51    54.50        -43.25       .
A12    55.11        -43.15       .
B43    50.16        -43.25       .

ID按平均值和最小值/最大值对表进行分组并聚合其他列。然而,当涉及到纬度/经度时,我想通过任何聚合(最小值或最大值,无关紧要)选择纬度,并选择其等效经度(例如A12-> 54.55& -43.26),而不是聚合为平均值或最小值/最大分开。

是否有一种智能且简单的方法来构建此查询?

当前查询类似于:

select 
avg(other_columns),
min(latitude),
?(longtitude)
from table
group by ID;

编辑:在评论后澄清要求。

标签: sqlgroup-bygisamazon-redshiftlatitude-longitude

解决方案


您总是可以从纬度和经度中制作一对,例如通过转换为字符串并将它们连接起来(我相信 Redshift 不支持结构,否则它会是更好的选择):

cast(lat as string) || '&' || cast(lon as string)

然后选择例如这对的最小值,最后使用 SPLIT_PART 函数将其拆分回来。


推荐阅读