]> git.evergreen-ils.org Git - working/Evergreen.git/blob - Open-ILS/src/sql/Pg/upgrade/yyyy.data.org-unit-count-badge.sql
8eae7a217c05205fcf614e531009ba82aa5143aa
[working/Evergreen.git] / Open-ILS / src / sql / Pg / upgrade / yyyy.data.org-unit-count-badge.sql
1 BEGIN;
2
3 -- SELECT evergreen.upgrade_deps_block_check('XXXX', :eg_version);
4
5 CREATE OR REPLACE FUNCTION rating.org_unit_count(badge_id INT)
6     RETURNS TABLE (record INT, value NUMERIC) AS $f$
7 DECLARE
8     badge   rating.badge_with_orgs%ROWTYPE;
9 BEGIN
10
11     SELECT * INTO badge FROM rating.badge_with_orgs WHERE id = badge_id;
12
13     PERFORM rating.precalc_bibs_by_copy(badge_id);
14
15     DELETE FROM precalc_copy_filter_bib_list WHERE id NOT IN (
16         SELECT id FROM precalc_filter_bib_list
17             INTERSECT
18         SELECT id FROM precalc_bibs_by_copy_list
19     );
20     ANALYZE precalc_copy_filter_bib_list;
21
22     RETURN QUERY
23      SELECT f.id::INT AS bib,
24             COUNT(DISTINCT cp.circ_lib)::NUMERIC
25      FROM asset.copy cp
26           JOIN precalc_copy_filter_bib_list f ON (cp.id = f.copy)
27           JOIN asset.call_number cn ON (cn.id = cp.call_number)
28      WHERE cn.owning_lib = ANY (badge.orgs) GROUP BY 1;
29
30 END;
31 $f$ LANGUAGE PLPGSQL STRICT;
32
33 INSERT INTO rating.popularity_parameter (id, name, func, require_percentile) VALUES
34     (17,'Circulation Library Count', 'rating.org_unit_count', TRUE);
35
36 COMMIT;
37