SQLize Online / PHPize Online  /  SQLtest Online

Share      Blog   Popular
Copy Format Clear
create table arr1( k integer[]); insert into arr1 VALUES('{700,1200,1700,100,900}'); insert into arr1 VALUES('{985,129,680,348,0,808,295}'); create or replace function foxes_in_array(arr int[]) returns int as $$ declare lval int := 0; nval int; sval int := 0; x int; begin foreach x in array $1 loop if lval=0 then lval=x; elsif lval<x then nval=x-lval; lval=x; sval=sval+nval; elsif lval>x then lval=x; end if; end loop; return sval; end; $$ language 'plpgsql'; select foxes_in_array(k), ( WITH dat AS ( SELECT CASE WHEN v > LAG(v) OVER w THEN v - LAG(v) OVER w ELSE 0 END AS res FROM unnest(k) WITH ORDINALITY AS u(v, n) WINDOW w AS (ORDER BY n) ) SELECT COALESCE(SUM(res), 0) FROM dat ) AS correct_res from arr1;
Stuck with a problem? Got Error? Ask ChatGPT!
Copy Clear