--
-- PostgreSQL database dump
--

SET statement_timeout = 0;
SET lock_timeout = 0;
SET client_encoding = 'UTF8';
SET standard_conforming_strings = on;
SET check_function_bodies = false;
SET client_min_messages = warning;

SET search_path = "SALVIAS", pg_catalog;

--
-- Name: _plots_01_count_of_projects; Type: VIEW; Schema: SALVIAS; Owner: -
--

CREATE VIEW _plots_01_count_of_projects AS
 SELECT count(*) AS projects
   FROM projects;


--
-- Name: _plots_02_list_of_project_names; Type: VIEW; Schema: SALVIAS; Owner: -
--

CREATE VIEW _plots_02_list_of_project_names AS
 SELECT projects.project_name
   FROM projects;


--
-- Name: _plots_03_count_of_all_plots_in_this_source; Type: VIEW; Schema: SALVIAS; Owner: -
--

CREATE VIEW _plots_03_count_of_all_plots_in_this_source AS
 SELECT count(DISTINCT (pm."SiteCode")::text) AS plots
   FROM (projects p
   JOIN "plotMetadata" pm ON ((p.project_id = pm.project_id)));


--
-- Name: _plots_04_count_of_plots_in_each_project_in_this_source; Type: VIEW; Schema: SALVIAS; Owner: -
--

CREATE VIEW _plots_04_count_of_plots_in_each_project_in_this_source AS
 SELECT p.project_name, 
    count(*) AS plots
   FROM (projects p
   JOIN "plotMetadata" pm ON ((p.project_id = pm.project_id)))
  GROUP BY p.project_name;


--
-- Name: _plots_05_list_of_plot_codes_by_project; Type: VIEW; Schema: SALVIAS; Owner: -
--

CREATE VIEW _plots_05_list_of_plot_codes_by_project AS
 SELECT p.project_name, 
    (pm."SiteCode")::text AS plot_code
   FROM (projects p
   JOIN "plotMetadata" pm ON ((p.project_id = pm.project_id)));


--
-- Name: _plots_06_list_of_plots_with_stem_measurements; Type: VIEW; Schema: SALVIAS; Owner: -
--

CREATE VIEW _plots_06_list_of_plots_with_stem_measurements AS
 SELECT DISTINCT p.project_name, 
    (pm."SiteCode")::text AS plot_code
   FROM (((projects p
   JOIN "plotMetadata" pm ON ((p.project_id = pm.project_id)))
   JOIN "plotObservations" po ON ((pm."PlotID" = po."PlotID")))
   JOIN stems s ON ((po."PlotObsID" = s.plotobs_id)))
  GROUP BY p.project_name, (pm."SiteCode")::text
  ORDER BY p.project_name, (pm."SiteCode")::text;


--
-- Name: _plots_06a_list_of_stems; Type: VIEW; Schema: SALVIAS; Owner: -
--

CREATE VIEW _plots_06a_list_of_stems AS
 SELECT p.project_name, 
    (pm."SiteCode")::text AS plot_code, 
    (s.stem_id)::text AS stem_id
   FROM (((projects p
   JOIN "plotMetadata" pm ON ((p.project_id = pm.project_id)))
   JOIN "plotObservations" po ON ((pm."PlotID" = po."PlotID")))
   JOIN stems s ON ((po."PlotObsID" = s.plotobs_id)))
  ORDER BY p.project_name, (pm."SiteCode")::text, (s.stem_id)::text;


--
-- Name: _plots_07_list_of_plots_which_use_counts_of_indiv_per_species; Type: VIEW; Schema: SALVIAS; Owner: -
--

CREATE VIEW _plots_07_list_of_plots_which_use_counts_of_indiv_per_species AS
 SELECT DISTINCT p.project_name, 
    (pm."SiteCode")::text AS plot_code
   FROM ((projects p
   JOIN "plotMetadata" pm ON ((p.project_id = pm.project_id)))
   JOIN "plotObservations" po ON (((pm."PlotID" = po."PlotID") AND (po."NoInd" > 1))))
  GROUP BY p.project_name, (pm."SiteCode")::text
  ORDER BY p.project_name, (pm."SiteCode")::text;


--
-- Name: _plots_08_list_of_plots_which_use_percent_cover; Type: VIEW; Schema: SALVIAS; Owner: -
--

CREATE VIEW _plots_08_list_of_plots_which_use_percent_cover AS
 SELECT DISTINCT p.project_name, 
    (pm."SiteCode")::text AS plot_code
   FROM ((projects p
   JOIN "plotMetadata" pm ON ((p.project_id = pm.project_id)))
   JOIN "plotObservations" po ON (((pm."PlotID" = po."PlotID") AND (po.cover_percent IS NOT NULL))))
  GROUP BY p.project_name, (pm."SiteCode")::text
  ORDER BY p.project_name, (pm."SiteCode")::text;


--
-- Name: _plots_09_list_of_plots_which_use_line_intercept; Type: VIEW; Schema: SALVIAS; Owner: -
--

CREATE VIEW _plots_09_list_of_plots_which_use_line_intercept AS
 SELECT DISTINCT p.project_name, 
    (pm."SiteCode")::text AS plot_code
   FROM ((projects p
   JOIN "plotMetadata" pm ON ((p.project_id = pm.project_id)))
   JOIN "plotObservations" po ON (((pm."PlotID" = po."PlotID") AND (po.intercept_cm IS NOT NULL))))
  GROUP BY p.project_name, (pm."SiteCode")::text
  ORDER BY p.project_name, (pm."SiteCode")::text;


--
-- Name: _plots_10_count_of_individuals_per_plot_in_each_project; Type: VIEW; Schema: SALVIAS; Owner: -
--

CREATE VIEW _plots_10_count_of_individuals_per_plot_in_each_project AS
 SELECT p.project_name, 
    (pm."SiteCode")::text AS plot_code, 
    sum(po."NoInd") AS individuals
   FROM ((projects p
   JOIN "plotMetadata" pm ON ((p.project_id = pm.project_id)))
   JOIN "plotObservations" po ON ((pm."PlotID" = po."PlotID")))
  GROUP BY p.project_name, (pm."SiteCode")::text
  ORDER BY p.project_name, (pm."SiteCode")::text;


--
-- Name: VIEW _plots_10_count_of_individuals_per_plot_in_each_project; Type: COMMENT; Schema: SALVIAS; Owner: -
--

COMMENT ON VIEW _plots_10_count_of_individuals_per_plot_in_each_project IS '
Method: Sum on NoInd (number of individuals) column.
Note 1: `individuals` should be NULL for plots which use percent cover or line-intercept methods.
Note 2: Do not count records in plotObservations table, as this will give incorrect total for plots such as Gentry plot, which count individuals per species per subplot
';


--
-- Name: _plots_10a_aggregate_observation_individual_counts; Type: VIEW; Schema: SALVIAS; Owner: -
--

CREATE VIEW _plots_10a_aggregate_observation_individual_counts AS
 SELECT p.project_name, 
    (pm."SiteCode")::text AS plot_code, 
    (po."PlotObsID")::text AS individual_id, 
    po."NoInd" AS individuals
   FROM ((projects p
   JOIN "plotMetadata" pm ON ((p.project_id = pm.project_id)))
   JOIN "plotObservations" po ON ((pm."PlotID" = po."PlotID")))
  ORDER BY p.project_name, (pm."SiteCode")::text, (po."PlotObsID")::text;


--
-- Name: VIEW _plots_10a_aggregate_observation_individual_counts; Type: COMMENT; Schema: SALVIAS; Owner: -
--

COMMENT ON VIEW _plots_10a_aggregate_observation_individual_counts IS '
Note 1: `individuals` should be NULL for plots which use percent cover or line-intercept methods.
';


--
-- Name: _plots_11_count_of_stems_per_plot_in_each_project; Type: VIEW; Schema: SALVIAS; Owner: -
--

CREATE VIEW _plots_11_count_of_stems_per_plot_in_each_project AS
 SELECT p.project_name, 
    (pm."SiteCode")::text AS plot_code, 
    count(DISTINCT s.stem_id) AS stems
   FROM (((projects p
   JOIN "plotMetadata" pm ON ((p.project_id = pm.project_id)))
   JOIN "plotObservations" po ON ((pm."PlotID" = po."PlotID")))
   JOIN stems s ON ((po."PlotObsID" = s.plotobs_id)))
  GROUP BY p.project_name, (pm."SiteCode")::text
  ORDER BY p.project_name, (pm."SiteCode")::text;


--
-- Name: VIEW _plots_11_count_of_stems_per_plot_in_each_project; Type: COMMENT; Schema: SALVIAS; Owner: -
--

COMMENT ON VIEW _plots_11_count_of_stems_per_plot_in_each_project IS '
Method: count records in stems table
';


--
-- Name: _plots_12_count_of_verbatim_taxa_per_plot_in_each_project; Type: VIEW; Schema: SALVIAS; Owner: -
--

CREATE VIEW _plots_12_count_of_verbatim_taxa_per_plot_in_each_project AS
 SELECT a.project_name, 
    a.plot_code, 
    count(a.taxon) AS taxa
   FROM ( SELECT DISTINCT p.project_name, 
            (pm."SiteCode")::text AS plot_code, 
            btrim(concat_ws(' '::text, ifnull(po."Family", ''::text), ifnull(po."Genus", ''::text), ifnull(po."Species", ''::text), if((po.infra_ep_1 IS NULL), ifnull(po.auth, ''::text), btrim(concat_ws(' '::text, ifnull(po.infra_rank_1, ''::text), ifnull(po.infra_ep_1, ''::text), ifnull(po.infra_auth_1, ''::text)))))) AS taxon
           FROM ((projects p
      JOIN "plotMetadata" pm ON ((p.project_id = pm.project_id)))
   JOIN "plotObservations" po ON ((pm."PlotID" = po."PlotID")))) a
  GROUP BY a.project_name, a.plot_code
  ORDER BY a.project_name, a.plot_code;


--
-- Name: VIEW _plots_12_count_of_verbatim_taxa_per_plot_in_each_project; Type: COMMENT; Schema: SALVIAS; Owner: -
--

COMMENT ON VIEW _plots_12_count_of_verbatim_taxa_per_plot_in_each_project IS '
Note: Assumes identical concatenation of taxonomic fields to form verbatim taxon name in vegBIEN
';


--
-- Name: _plots_13_list_of_distinct_verbatim_taxa_in_each_plot_in_each_p; Type: VIEW; Schema: SALVIAS; Owner: -
--

CREATE VIEW _plots_13_list_of_distinct_verbatim_taxa_in_each_plot_in_each_p AS
 SELECT DISTINCT p.project_name, 
    (pm."SiteCode")::text AS plot_code, 
    btrim(concat_ws(' '::text, ifnull(po."Family", ''::text), ifnull(po."Genus", ''::text), ifnull(po."Species", ''::text), if((po.infra_ep_1 IS NULL), ifnull(po.auth, ''::text), btrim(concat_ws(' '::text, ifnull(po.infra_rank_1, ''::text), ifnull(po.infra_ep_1, ''::text), ifnull(po.infra_auth_1, ''::text)))))) AS taxon
   FROM ((projects p
   JOIN "plotMetadata" pm ON ((p.project_id = pm.project_id)))
   JOIN "plotObservations" po ON ((pm."PlotID" = po."PlotID")))
  ORDER BY p.project_name, (pm."SiteCode")::text, btrim(concat_ws(' '::text, ifnull(po."Family", ''::text), ifnull(po."Genus", ''::text), ifnull(po."Species", ''::text), if((po.infra_ep_1 IS NULL), ifnull(po.auth, ''::text), btrim(concat_ws(' '::text, ifnull(po.infra_rank_1, ''::text), ifnull(po.infra_ep_1, ''::text), ifnull(po.infra_auth_1, ''::text))))));


--
-- Name: VIEW _plots_13_list_of_distinct_verbatim_taxa_in_each_plot_in_each_p; Type: COMMENT; Schema: SALVIAS; Owner: -
--

COMMENT ON VIEW _plots_13_list_of_distinct_verbatim_taxa_in_each_plot_in_each_p IS '
Note: Assumes identical concatenation of taxonomic fields to form verbatim taxon name in vegBIEN.
';


--
-- Name: _plots_14_count_of_indiv_per_verbatim_taxon_per_plot_in_each_pr; Type: VIEW; Schema: SALVIAS; Owner: -
--

CREATE VIEW _plots_14_count_of_indiv_per_verbatim_taxon_per_plot_in_each_pr AS
 SELECT DISTINCT p.project_name, 
    (pm."SiteCode")::text AS plot_code, 
    btrim(concat_ws(' '::text, ifnull(po."Family", ''::text), ifnull(po."Genus", ''::text), ifnull(po."Species", ''::text), if((po.infra_ep_1 IS NULL), ifnull(po.auth, ''::text), btrim(concat_ws(' '::text, ifnull(po.infra_rank_1, ''::text), ifnull(po.infra_ep_1, ''::text), ifnull(po.infra_auth_1, ''::text)))))) AS taxon, 
    sum(po."NoInd") AS individuals
   FROM ((projects p
   JOIN "plotMetadata" pm ON ((p.project_id = pm.project_id)))
   JOIN "plotObservations" po ON ((pm."PlotID" = po."PlotID")))
  GROUP BY p.project_name, (pm."SiteCode")::text, btrim(concat_ws(' '::text, ifnull(po."Family", ''::text), ifnull(po."Genus", ''::text), ifnull(po."Species", ''::text), if((po.infra_ep_1 IS NULL), ifnull(po.auth, ''::text), btrim(concat_ws(' '::text, ifnull(po.infra_rank_1, ''::text), ifnull(po.infra_ep_1, ''::text), ifnull(po.infra_auth_1, ''::text))))))
  ORDER BY p.project_name, (pm."SiteCode")::text, btrim(concat_ws(' '::text, ifnull(po."Family", ''::text), ifnull(po."Genus", ''::text), ifnull(po."Species", ''::text), if((po.infra_ep_1 IS NULL), ifnull(po.auth, ''::text), btrim(concat_ws(' '::text, ifnull(po.infra_rank_1, ''::text), ifnull(po.infra_ep_1, ''::text), ifnull(po.infra_auth_1, ''::text))))));


--
-- Name: VIEW _plots_14_count_of_indiv_per_verbatim_taxon_per_plot_in_each_pr; Type: COMMENT; Schema: SALVIAS; Owner: -
--

COMMENT ON VIEW _plots_14_count_of_indiv_per_verbatim_taxon_per_plot_in_each_pr IS '
Note: Assumes identical concatenation of taxonomic fields to form verbatim taxon name in vegBIEN
';


--
-- Name: _plots_15_pct_cover_of_each_verb_taxon_in_each_plot_in_each_pro; Type: VIEW; Schema: SALVIAS; Owner: -
--

CREATE VIEW _plots_15_pct_cover_of_each_verb_taxon_in_each_plot_in_each_pro AS
 SELECT DISTINCT p.project_name, 
    (pm."SiteCode")::text AS plot_code, 
    btrim(concat_ws(' '::text, ifnull(po."Family", ''::text), ifnull(po."Genus", ''::text), ifnull(po."Species", ''::text), if((po.infra_ep_1 IS NULL), ifnull(po.auth, ''::text), btrim(concat_ws(' '::text, ifnull(po.infra_rank_1, ''::text), ifnull(po.infra_ep_1, ''::text), ifnull(po.infra_auth_1, ''::text)))))) AS taxon, 
    sum((po.cover_percent)::double precision) AS totalpercentcover
   FROM ((projects p
   JOIN "plotMetadata" pm ON ((p.project_id = pm.project_id)))
   JOIN "plotObservations" po ON (((pm."PlotID" = po."PlotID") AND (po.cover_percent IS NOT NULL))))
  GROUP BY p.project_name, (pm."SiteCode")::text, btrim(concat_ws(' '::text, ifnull(po."Family", ''::text), ifnull(po."Genus", ''::text), ifnull(po."Species", ''::text), if((po.infra_ep_1 IS NULL), ifnull(po.auth, ''::text), btrim(concat_ws(' '::text, ifnull(po.infra_rank_1, ''::text), ifnull(po.infra_ep_1, ''::text), ifnull(po.infra_auth_1, ''::text))))))
  ORDER BY p.project_name, (pm."SiteCode")::text, btrim(concat_ws(' '::text, ifnull(po."Family", ''::text), ifnull(po."Genus", ''::text), ifnull(po."Species", ''::text), if((po.infra_ep_1 IS NULL), ifnull(po.auth, ''::text), btrim(concat_ws(' '::text, ifnull(po.infra_rank_1, ''::text), ifnull(po.infra_ep_1, ''::text), ifnull(po.infra_auth_1, ''::text))))));


--
-- Name: VIEW _plots_15_pct_cover_of_each_verb_taxon_in_each_plot_in_each_pro; Type: COMMENT; Schema: SALVIAS; Owner: -
--

COMMENT ON VIEW _plots_15_pct_cover_of_each_verb_taxon_in_each_plot_in_each_pro IS '
Note 1: Assumes identical concatenation of taxonomic fields to form verbatim taxon name in vegbien
Note 2: Grouping mean cover for entire plot allows inclusion of plots with subplots (separate cover measure for each species in each subplot),  plots with strata (separate cover measures for each species in each stratum), and plots without subplots or strata (one cover measure per species per plot) in same query.
Note 3: currently, there are no SALVIAS percent cover plots in BIEN
';


--
-- Name: _plots_16_intercepts_for_each_verb_taxon_in_each_plot_each_proj; Type: VIEW; Schema: SALVIAS; Owner: -
--

CREATE VIEW _plots_16_intercepts_for_each_verb_taxon_in_each_plot_each_proj AS
 SELECT DISTINCT p.project_name, 
    (pm."SiteCode")::text AS plot_code, 
    btrim(concat_ws(' '::text, ifnull(po."Family", ''::text), ifnull(po."Genus", ''::text), ifnull(po."Species", ''::text), if((po.infra_ep_1 IS NULL), ifnull(po.auth, ''::text), btrim(concat_ws(' '::text, ifnull(po.infra_rank_1, ''::text), ifnull(po.infra_ep_1, ''::text), ifnull(po.infra_auth_1, ''::text)))))) AS taxon, 
    po.intercept_cm
   FROM ((projects p
   JOIN "plotMetadata" pm ON ((p.project_id = pm.project_id)))
   JOIN "plotObservations" po ON (((pm."PlotID" = po."PlotID") AND (po.intercept_cm IS NOT NULL))))
  ORDER BY p.project_name, (pm."SiteCode")::text, btrim(concat_ws(' '::text, ifnull(po."Family", ''::text), ifnull(po."Genus", ''::text), ifnull(po."Species", ''::text), if((po.infra_ep_1 IS NULL), ifnull(po.auth, ''::text), btrim(concat_ws(' '::text, ifnull(po.infra_rank_1, ''::text), ifnull(po.infra_ep_1, ''::text), ifnull(po.infra_auth_1, ''::text))))));


--
-- Name: VIEW _plots_16_intercepts_for_each_verb_taxon_in_each_plot_each_proj; Type: COMMENT; Schema: SALVIAS; Owner: -
--

COMMENT ON VIEW _plots_16_intercepts_for_each_verb_taxon_in_each_plot_each_proj IS '
Note 1: Assumes identical concatenation of taxonomic fields to form verbatim taxon name in vegbien
Note 2: Grouping mean cover for entire plot combines plots with subplots (separate cover measure for each species in each subplot) with plots with strata (separate cover measures for each species in each stratum) with plots without subplots or strata (one cover measure per species per plot.
';


--
-- Name: _plots_17_count_of_subplots_per_plot_for_each_project; Type: VIEW; Schema: SALVIAS; Owner: -
--

CREATE VIEW _plots_17_count_of_subplots_per_plot_for_each_project AS
 SELECT p.project_name, 
    (pm."SiteCode")::text AS plot_code, 
    count(DISTINCT po."Line") AS subplots
   FROM ((projects p
   JOIN "plotMetadata" pm ON ((p.project_id = pm.project_id)))
   JOIN "plotObservations" po ON ((pm."PlotID" = po."PlotID")))
  GROUP BY p.project_name, (pm."SiteCode")::text
  ORDER BY p.project_name, (pm."SiteCode")::text;


--
-- Name: _plots_18_list_of_subplots_codes_for_each_plot_for_each_project; Type: VIEW; Schema: SALVIAS; Owner: -
--

CREATE VIEW _plots_18_list_of_subplots_codes_for_each_plot_for_each_project AS
 SELECT DISTINCT p.project_name, 
    (pm."SiteCode")::text AS plot_code, 
    po."Line" AS subplot_code
   FROM ((projects p
   JOIN "plotMetadata" pm ON ((p.project_id = pm.project_id)))
   JOIN "plotObservations" po ON (((pm."PlotID" = po."PlotID") AND ((pm."SiteCode")::text IS NOT NULL))))
  ORDER BY p.project_name, (pm."SiteCode")::text, po."Line";


--
-- Name: VIEW _plots_18_list_of_subplots_codes_for_each_plot_for_each_project; Type: COMMENT; Schema: SALVIAS; Owner: -
--

COMMENT ON VIEW _plots_18_list_of_subplots_codes_for_each_plot_for_each_project IS '
Note: includes plots with and without subplots
';


--
-- Name: _plots_19_count_of_censuses_per_plot_in_each_project; Type: VIEW; Schema: SALVIAS; Owner: -
--

CREATE VIEW _plots_19_count_of_censuses_per_plot_in_each_project AS
 SELECT p.project_name, 
    (pm."SiteCode")::text AS plot_code, 
    count(DISTINCT ARRAY[po.census_date]) AS inventories
   FROM ((projects p
   JOIN "plotMetadata" pm ON ((p.project_id = pm.project_id)))
   LEFT JOIN "plotObservations" po ON (((pm."PlotID" = po."PlotID") AND ((pm."SiteCode")::text IS NOT NULL))))
  GROUP BY p.project_name, (pm."SiteCode")::text
  ORDER BY p.project_name, (pm."SiteCode")::text;


--
-- PostgreSQL database dump complete
--

