13 lines
504 B
Text
13 lines
504 B
Text
# Mean of given list of angles in degrees, to 7 decimal places
|
|
create or replace function mean_angle(lst) as (
|
|
with angles as (select unnest(lst) as angle),
|
|
radians as (select (angle * pi() / 180) as alpha from angles),
|
|
trig as (select sin(alpha) as s, cos(alpha) as c from radians)
|
|
|
|
select round(atan2( sum(s) / length(lst), sum(c) / length(lst) ) * 180 / pi(), 7) from trig
|
|
);
|
|
|
|
select angles, mean_angle(angles) as mean from values
|
|
([350, 10]),
|
|
([90,180,270,360]),
|
|
([10, 20, 30]) t(angles);
|