3 CREATE OR REPLACE FUNCTION rating.copy_count(badge_id INT)
4 RETURNS TABLE (record INT, value NUMERIC) AS $f$
6 badge rating.badge_with_orgs%ROWTYPE;
9 SELECT * INTO badge FROM rating.badge_with_orgs WHERE id = badge_id;
11 PERFORM rating.precalc_bibs_by_copy(badge_id);
13 DELETE FROM precalc_copy_filter_bib_list WHERE id NOT IN (
14 SELECT id FROM precalc_filter_bib_list
16 SELECT id FROM precalc_bibs_by_copy_list
18 ANALYZE precalc_copy_filter_bib_list;
21 SELECT f.id::INT AS bib,
22 COUNT(f.copy)::NUMERIC
23 FROM precalc_copy_filter_bib_list f
24 JOIN asset.copy cp ON (f.copy = cp.id)
25 JOIN asset.call_number cn ON (cn.id = cp.call_number)
26 WHERE cn.owning_lib = ANY (badge.orgs) GROUP BY 1;
29 $f$ LANGUAGE PLPGSQL STRICT;
31 INSERT INTO rating.popularity_parameter (name, func, require_percentile) VALUES ('Copy Count', 'rating.copy_count', TRUE);