cr_show_t4.sql

This page documents the preview version (v2.23). Preview includes features under active development and is for development and testing only. For production, use the stable version (v2024.1). To learn more, see Versioning.

Save this script as cr_show_t4.sql.

-- Function to report on some useful overall measures of t4.
create or replace function show_t4()
  returns table(t varchar)
  language plpgsql
as $body$
declare
  count_star constant int not null :=
    (select count(*) from t4);
  min_dp_score constant numeric not null :=
    (select min(dp_score) from t4);
  max_dp_score constant numeric not null :=
    (select max(dp_score) from t4);
  avg_dp_score constant numeric not null :=
    (select avg(dp_score) from t4);
  dev_dp_score constant numeric not null :=
    (select stddev(dp_score) from t4);

  min_int_score constant numeric not null :=
    (select min(int_score) from t4);
  max_int_score constant numeric not null :=
    (select max(int_score) from t4);
  avg_int_score constant numeric not null :=
    (select avg(int_score) from t4);
  dev_int_score constant numeric not null :=
    (select stddev(int_score) from t4);
begin
  assert
    (min_int_score = 0)                                           and
    (min_int_score::numeric = min_dp_score)                       and
    (max_int_score = 100)                                         and
    (max_int_score::numeric = max_dp_score)                       and
    ((avg_int_score*100.0)/avg_dp_score between 99.99 and 101.01) and
    ((dev_int_score*100.0)/dev_dp_score between 99.99 and 101.01) ,
  'unexpected';

  t := rpad('count(*)', 30)||
       to_char(count_star, '999999999'); return next;

  t := ''; return next;

  t := rpad('avg(%score)', 30)||
       to_char(avg_dp_score, '9999999.9'); return next;

  t := rpad('stddev(%score)', 30)||
       to_char(dev_dp_score, '9999999.9'); return next;
end;
$body$;