我正在尝试创建一个select语句,将每个唯一行(按位置'字段)复制361次(0到360)。还会创建一个显示序列(0到360)的附加列。这样做的目的是计算每个lat&的坐标。长期使用半径和度数字段将其渲染为Tableau中的圆圈。
这是原始样本表。
这是最终所需的输出。
有人可以帮忙吗?
以逗号分隔的示例数据〜
Location,Radius,Latitude,Longitude
A,500,31.4799,88.38783
B,1000,35.580941,77.01125
C,800,37.492528,88.797115
编辑:原始表格中有50多行。
答案 0 :(得分:1)
我不认为Vertica具有与Postgres generate_series()
相当的效果。如果你有一个至少有361行的表,你可以模拟它:
with n as (
select row_number() over () - 1 as n
from (select s.* from sample s limit 361) s
)
select s.*, n.n as degress
from sample s cross join
n;
在Vertica中,order by
功能可选row_number()
。
答案 1 :(得分:0)
您也可以滥用Vertica中的time series
来生成序列,而不需要任何表格:
with mydegrees as (
SELECT extract( epoch from slice_time - to_timestamp(0) ) Degree
from ( select to_timestamp(0) ts
union all
select to_timestamp(0) + interval '360 seconds' ) x
TIMESERIES slice_time AS '1 second' OVER (ORDER BY ts)
)
select t.*, d.Degree
from mytable t cross join
mydegrees d;
基本上我们只设置0到360秒的开始/时间戳,然后我们为每个时间片提取“自纪元0开始的秒数”(使用1秒时间片)。