Guest User

Untitled

a guest
Apr 22nd, 2018
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.57 KB | None | 0 0
  1. CREATE OR REPLACE FUNCTION _final_median(NUMERIC[])
  2. RETURNS NUMERIC AS
  3. $$
  4. SELECT AVG(val)
  5. FROM (
  6. SELECT val
  7. FROM unnest($1) val
  8. ORDER BY 1
  9. LIMIT 2 - MOD(array_upper($1, 1), 2)
  10. OFFSET CEIL(array_upper($1, 1) / 2.0) - 1
  11. ) sub;
  12. $$
  13. LANGUAGE 'sql' IMMUTABLE;
  14.  
  15. CREATE AGGREGATE median(NUMERIC) (
  16. SFUNC=array_append,
  17. STYPE=NUMERIC[],
  18. FINALFUNC=_final_median,
  19. INITCOND='{}'
  20. );
  21.  
  22. SELECT
  23. MIN(score) AS min,
  24. median(result.score)::float AS median,
  25. --percentile_cont(0.5) WITHIN GROUP (ORDER BY score) AS median,
  26. MAX(score) AS max
  27. FROM
  28. result;
Add Comment
Please, Sign In to add comment