cr_pr_cd_equality_report.sql
This page documents the preview version (v2.21). 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_pr_cd_equality_report.sql
.
set client_min_messages = warning;
drop type if exists pr_cd_equality_report_t cascade;
create type pr_cd_equality_report_t as("count(*)" int, max_score text, max_ratio text);
create or replace function pr_cd_equality_report(
delta_threshold in double precision)
returns SETOF pr_cd_equality_report_t
language sql
as $body$
with
measures as (
select
score,
(percent_rank() over w) as pr,
(cume_dist() over w) as cd
from t4_view
window w as (order by score))
,
ratios as (
select
score,
(pr*100::double precision)/cd as ratio
from measures)
,
deltas as (
select
score,
ratio,
abs(ratio - 100) as delta
from ratios)
,
bad_deltas as (
select
score,
ratio,
delta
from deltas
where delta > delta_threshold)
,
result as (
select
count(*) as n,
to_char(max(score), '999.99') as max_score,
to_char(max(ratio), '999.99') as max_ratio
from bad_deltas)
select (n, max_score, max_ratio)::pr_cd_equality_report_t
from result;
$body$;