【发布时间】:2021-10-12 08:19:43
【问题描述】:
我正在使用 case when 语句将位置(起点和终点纬度、经度)分组为 3 个区域。
为每个区域运行 1 个查询工作正常。
只需将所有区域捆绑在一个查询中,结果为空。
select period
, case
when ( in_polygon("polygon", starting_lng, starting_lat, <coordinates_1__5739_characters> ) = True
or in_polygon("polygon", dest_lng, dest_lat, <coordinates_1__5739_characters> ) = True )
then 'Region 1'
end as region
, sum(<metrics>)
from source_table
where <conditions>
group by period, starting_lng, starting_lat, dest_lng, dest_lat
select period
, case
when ( in_polygon("polygon", starting_lng, starting_lat, <coordinates_2__2471_characters> ) = True
or in_polygon("polygon", dest_lng, dest_lat, <coordinates_2__2471_characters> ) = True )
then 'Region 2'
end as region
, sum(<metrics>)
from source_table
where <conditions>
group by period, starting_lng, starting_lat, dest_lng, dest_lat
select period
, case
when ( in_polygon("polygon", starting_lng, starting_lat, <coordinates_3__3039_characters> ) = True
or in_polygon("polygon", dest_lng, dest_lat, <coordinates_3__3039_characters> ) = True )
then 'Region 3'
end as region
, sum(<metrics>)
from source_table
where <conditions>
group by period, starting_lng, starting_lat, dest_lng, dest_lat
上面的 3 个查询工作正常。以下一项结果为空:
select period
, case
when ( in_polygon("polygon", starting_lng, starting_lat, <coordinates_1__5739_characters> ) = True
or in_polygon("polygon", dest_lng, dest_lat, <coordinates_1__5739_characters> ) = True )
then 'Region 1'
when ( in_polygon("polygon", starting_lng, starting_lat, <coordinates_2__2471_characters> ) = True
or in_polygon("polygon", dest_lng, dest_lat, <coordinates_2__2471_characters> ) = True )
then 'Region 2'
when ( in_polygon("polygon", starting_lng, starting_lat, <coordinates_3__3079_characters> ) = True
or in_polygon("polygon", dest_lng, dest_lat, <coordinates_3__3079_characters> ) = True )
then 'Region 3'
end as region
, sum(<metrics>)
from source_table
where <conditions>
group by period, starting_lng, starting_lat, dest_lng, dest_lat
观察到坐标字符串很长,这促使我尝试分离区域。
(2 x 5,739 + 2 x 2,417 + 2 x 3,079) = 22,578
我希望你的想法是:
-
case when语句有限制吗?如果是,上限是多少个字符? - 有什么比将查询分成三个更实用的解决方案?
【问题讨论】:
-
标记您正在使用的 DBMS。顺便说一句,你拥有的是
CASE表达式,而不是语句。