RosettaCodeData/Task/Averages-Mean-angle/DuckDB/averages-mean-angle.duckdb
2025-08-11 18:05:26 -07:00

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);