Advertisement
roganhamby

Author History

Oct 15th, 2013
178
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. -- 2014-12-22
  2. -- taking out the total circs
  3. -- recent changes, adding a cut off to only look at records added within the last eight years
  4. -- adding a variable to look for print materials via the 06a
  5. -- no filtering by reference materials though
  6.  
  7.  
  8. DROP FUNCTION rogan.author_history(VARCHAR);
  9.  
  10. CREATE OR REPLACE FUNCTION rogan.author_history(author_name varchar(255))
  11.   RETURNS TABLE (
  12.    rh_copies                    NUMERIC,
  13.    rh_circs             NUMERIC,
  14.    yk_copies                    NUMERIC,
  15.    yk_circs             NUMERIC,
  16.    fm_copies                    NUMERIC,
  17.    fm_circs             NUMERIC,
  18.    cl_copies                    NUMERIC,
  19.    cl_circs             NUMERIC,
  20.    lw_copies                    NUMERIC,
  21.    lw_circs             NUMERIC,
  22.    author               TEXT,
  23.    title                TEXT,
  24.    publisher                    TEXT,
  25.    pubdate              TEXT,
  26.    isbn                 _text,
  27.    bib_id               int8,
  28.    created_on                   DATE
  29.   ) AS
  30. $$
  31. BEGIN
  32.  
  33. RETURN QUERY
  34.  
  35. SELECT
  36. SUM(rh_copies.cont) AS "rh_copies", SUM(rh_circs.cont) AS "rh_circs",
  37. SUM(yk_copies.cont) AS "yk_copies", SUM(yk_circs.cont) AS "yk_circs",
  38. SUM(fm_copies.cont) AS "fm_copies", SUM(fm_circs.cont) AS "fm_circs",
  39. SUM(cl_copies.cont) AS "cl_copies", SUM(cl_circs.cont) AS "cl_circs",
  40. SUM(lw_copies.cont) AS "lw_copies", SUM(lw_circs.cont) AS "lw_circs",
  41. msr.author, msr.title, msr.publisher, msr.pubdate, msr.isbn, bre.id AS "bib_id", date(bre.create_date) AS "created_on"
  42. FROM reporter.materialized_simple_record msr
  43. JOIN biblio.record_entry bre ON bre.id = msr.id
  44. LEFT JOIN (
  45.         SELECT COUNT(ac.id) AS "cont", bre.id AS "bib"
  46.         FROM reporter.materialized_simple_record msr
  47.         JOIN biblio.record_entry bre ON bre.id = msr.id
  48.         LEFT JOIN asset.call_number call ON call.record = bre.id
  49.         LEFT JOIN asset.COPY ac ON ac.call_number = call.id
  50.         JOIN actor.org_unit org ON ac.circ_lib = org.id
  51.         LEFT OUTER JOIN metabib.real_full_rec meta ON meta.record = call.record
  52.         WHERE msr.author ILIKE TRIM(TRAILING '.' FROM author_name) AND org.shortname = 'YCL-YK' AND ac.circ_modifier != 'RENTAL'
  53.         and ac.create_date > now() - interval '8 years'
  54.         AND meta.tag = 'LDR' AND SUBSTRING(meta.VALUE FROM 7 FOR 1) = 'a'
  55.         GROUP BY 2
  56. ) yk_copies ON yk_copies.bib = bre.id
  57. LEFT JOIN (
  58.         SELECT COUNT(ac.id) AS "cont", bre.id AS "bib"
  59.         FROM reporter.materialized_simple_record msr
  60.         JOIN biblio.record_entry bre ON bre.id = msr.id
  61.         LEFT JOIN asset.call_number call ON call.record = bre.id
  62.         LEFT JOIN asset.COPY ac ON ac.call_number = call.id
  63.         JOIN actor.org_unit org ON ac.circ_lib = org.id
  64.         LEFT OUTER JOIN metabib.real_full_rec meta ON meta.record = call.record
  65.         WHERE msr.author ILIKE TRIM(TRAILING '.' FROM author_name) AND org.shortname = 'YCL-LW' AND ac.circ_modifier != 'RENTAL'
  66.         and ac.create_date > now() - interval '8 years'
  67.         AND meta.tag = 'LDR' AND SUBSTRING(meta.VALUE FROM 7 FOR 1) = 'a'
  68.         GROUP BY 2
  69. ) lw_copies ON lw_copies.bib = bre.id
  70. LEFT JOIN (
  71.         SELECT COUNT(ac.id) AS "cont", bre.id AS "bib"
  72.         FROM reporter.materialized_simple_record msr
  73.         JOIN biblio.record_entry bre ON bre.id = msr.id
  74.         LEFT JOIN asset.call_number call ON call.record = bre.id
  75.         LEFT JOIN asset.COPY ac ON ac.call_number = call.id
  76.         JOIN actor.org_unit org ON ac.circ_lib = org.id
  77.         LEFT OUTER JOIN metabib.real_full_rec meta ON meta.record = call.record
  78.         WHERE msr.author ILIKE TRIM(TRAILING '.' FROM author_name) AND org.shortname = 'YCL-FM' AND ac.circ_modifier != 'RENTAL'
  79.         and ac.create_date > now() - interval '8 years'
  80.         AND meta.tag = 'LDR' AND SUBSTRING(meta.VALUE FROM 7 FOR 1) = 'a'
  81.         GROUP BY 2
  82. ) fm_copies ON fm_copies.bib = bre.id
  83. LEFT JOIN (
  84.         SELECT COUNT(ac.id) AS "cont", bre.id AS "bib"
  85.         FROM reporter.materialized_simple_record msr
  86.         JOIN biblio.record_entry bre ON bre.id = msr.id
  87.         LEFT JOIN asset.call_number call ON call.record = bre.id
  88.         LEFT JOIN asset.COPY ac ON ac.call_number = call.id
  89.         JOIN actor.org_unit org ON ac.circ_lib = org.id
  90.         LEFT OUTER JOIN metabib.real_full_rec meta ON meta.record = call.record
  91.         WHERE msr.author ILIKE TRIM(TRAILING '.' FROM author_name) AND org.shortname = 'YCL-CL' AND ac.circ_modifier != 'RENTAL'
  92.         and ac.create_date > now() - interval '8 years'
  93.         AND meta.tag = 'LDR' AND SUBSTRING(meta.VALUE FROM 7 FOR 1) = 'a'
  94.         GROUP BY 2
  95. ) cl_copies ON cl_copies.bib = bre.id
  96. LEFT JOIN (
  97.         SELECT COUNT(ac.id) AS "cont", bre.id AS "bib"
  98.         FROM reporter.materialized_simple_record msr
  99.         JOIN biblio.record_entry bre ON bre.id = msr.id
  100.         LEFT JOIN asset.call_number call ON call.record = bre.id
  101.         LEFT JOIN asset.COPY ac ON ac.call_number = call.id
  102.         JOIN actor.org_unit org ON ac.circ_lib = org.id
  103.         LEFT OUTER JOIN metabib.real_full_rec meta ON meta.record = call.record
  104.         WHERE msr.author ILIKE TRIM(TRAILING '.' FROM author_name) AND org.shortname = 'YCL-RH' AND ac.circ_modifier != 'RENTAL'
  105.         and ac.create_date > now() - interval '8 years'
  106.         AND meta.tag = 'LDR' AND SUBSTRING(meta.VALUE FROM 7 FOR 1) = 'a'
  107.         GROUP BY 2
  108. ) rh_copies ON rh_copies.bib = bre.id
  109. LEFT JOIN (
  110.         SELECT COUNT(circ.id) AS "cont", bre.id AS "bib"
  111.         FROM reporter.materialized_simple_record msr
  112.         JOIN biblio.record_entry bre ON bre.id = msr.id
  113.         LEFT JOIN asset.call_number call ON call.record = bre.id
  114.         LEFT JOIN asset.COPY ac ON ac.call_number = call.id
  115.         JOIN actor.org_unit org ON ac.circ_lib = org.id
  116.         LEFT JOIN ACTION.circulation circ ON circ.target_copy = ac.id
  117.         LEFT OUTER JOIN metabib.real_full_rec meta ON meta.record = call.record
  118.         WHERE msr.author ILIKE TRIM(TRAILING '.' FROM author_name) AND org.shortname = 'YCL-RH' AND ac.circ_modifier != 'RENTAL'
  119.         and ac.create_date > now() - interval '8 years'
  120.         AND meta.tag = 'LDR' AND SUBSTRING(meta.VALUE FROM 7 FOR 1) = 'a'
  121.         GROUP BY 2
  122. ) rh_circs ON rh_circs.bib = bre.id
  123. LEFT JOIN (
  124.         SELECT COUNT(circ.id) AS "cont", bre.id AS "bib"
  125.         FROM reporter.materialized_simple_record msr
  126.         JOIN biblio.record_entry bre ON bre.id = msr.id
  127.         LEFT JOIN asset.call_number call ON call.record = bre.id
  128.         LEFT JOIN asset.COPY ac ON ac.call_number = call.id
  129.         JOIN actor.org_unit org ON ac.circ_lib = org.id
  130.         LEFT JOIN ACTION.circulation circ ON circ.target_copy = ac.id
  131.         LEFT OUTER JOIN metabib.real_full_rec meta ON meta.record = call.record
  132.         WHERE msr.author ILIKE TRIM(TRAILING '.' FROM author_name) AND org.shortname = 'YCL-YK' AND ac.circ_modifier != 'RENTAL'
  133.         and ac.create_date > now() - interval '8 years'
  134.         AND meta.tag = 'LDR' AND SUBSTRING(meta.VALUE FROM 7 FOR 1) = 'a'
  135.         GROUP BY 2
  136. ) yk_circs ON yk_circs.bib = bre.id
  137. LEFT JOIN (
  138.         SELECT COUNT(circ.id) AS "cont", bre.id AS "bib"
  139.         FROM reporter.materialized_simple_record msr
  140.         JOIN biblio.record_entry bre ON bre.id = msr.id
  141.         LEFT JOIN asset.call_number call ON call.record = bre.id
  142.         LEFT JOIN asset.COPY ac ON ac.call_number = call.id
  143.         JOIN actor.org_unit org ON ac.circ_lib = org.id
  144.         LEFT JOIN ACTION.circulation circ ON circ.target_copy = ac.id
  145.         LEFT OUTER JOIN metabib.real_full_rec meta ON meta.record = call.record
  146.         WHERE msr.author ILIKE TRIM(TRAILING '.' FROM author_name) AND org.shortname = 'YCL-FM' AND ac.circ_modifier != 'RENTAL'
  147.         and ac.create_date > now() - interval '8 years'
  148.         AND meta.tag = 'LDR' AND SUBSTRING(meta.VALUE FROM 7 FOR 1) = 'a'
  149.         GROUP BY 2
  150. ) fm_circs ON fm_circs.bib = bre.id
  151. LEFT JOIN (
  152.         SELECT COUNT(circ.id) AS "cont", bre.id AS "bib"
  153.         FROM reporter.materialized_simple_record msr
  154.         JOIN biblio.record_entry bre ON bre.id = msr.id
  155.         LEFT JOIN asset.call_number call ON call.record = bre.id
  156.         LEFT JOIN asset.COPY ac ON ac.call_number = call.id
  157.         JOIN actor.org_unit org ON ac.circ_lib = org.id
  158.         LEFT JOIN ACTION.circulation circ ON circ.target_copy = ac.id
  159.         LEFT OUTER JOIN metabib.real_full_rec meta ON meta.record = call.record
  160.         WHERE msr.author ILIKE TRIM(TRAILING '.' FROM author_name) AND org.shortname = 'YCL-LW' AND ac.circ_modifier != 'RENTAL'
  161.         and ac.create_date > now() - interval '8 years'
  162.         AND meta.tag = 'LDR' AND SUBSTRING(meta.VALUE FROM 7 FOR 1) = 'a'
  163.         GROUP BY 2
  164. ) lw_circs ON lw_circs.bib = bre.id
  165. LEFT JOIN (
  166.         SELECT COUNT(circ.id) AS "cont", bre.id AS "bib"
  167.         FROM reporter.materialized_simple_record msr
  168.         JOIN biblio.record_entry bre ON bre.id = msr.id
  169.         LEFT JOIN asset.call_number call ON call.record = bre.id
  170.         LEFT JOIN asset.COPY ac ON ac.call_number = call.id
  171.         JOIN actor.org_unit org ON ac.circ_lib = org.id
  172.         LEFT JOIN ACTION.circulation circ ON circ.target_copy = ac.id
  173.         LEFT OUTER JOIN metabib.real_full_rec meta ON meta.record = call.record
  174.         WHERE msr.author ILIKE TRIM(TRAILING '.' FROM author_name) AND org.shortname = 'YCL-CL' AND ac.circ_modifier != 'RENTAL'
  175.         and ac.create_date > now() - interval '8 years'
  176.         AND meta.tag = 'LDR' AND SUBSTRING(meta.VALUE FROM 7 FOR 1) = 'a'
  177.         GROUP BY 2
  178. ) cl_circs ON cl_circs.bib = bre.id
  179. WHERE msr.author ILIKE TRIM(TRAILING '.' FROM author_name)
  180. GROUP BY 11, 12, 13, 14, 15, 16, 17
  181. ORDER BY 17 DESC;
  182.  
  183. END;
  184. $$  
  185. LANGUAGE plpgsql;
  186.  
  187. select * from rogan.author_history('rowling, j. k.');
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement