Project

General

Profile

« Previous | Next » 

Revision 7634

schemas/vegbien.sql: provider_count_view: Group data by dataprovider and dataset, rather than by each separately, to satisfy the GBIF attribution requirements as described by Brad

View differences:

schemas/vegbien.my.sql
2725 2725
--
2726 2726

  
2727 2727
CREATE TABLE provider_count (
2728
    level varchar(255) NOT NULL,
2729
    provider varchar(255) NOT NULL,
2730
    count varchar(255),
2728
    dataprovider varchar(255) NOT NULL,
2729
    dataset varchar(255) NOT NULL,
2730
    records varchar(255),
2731 2731
    sourcetype varchar(255),
2732 2732
    observationtype varchar(255)
2733 2733
);
......
4776 4776
--
4777 4777

  
4778 4778
ALTER TABLE provider_count
4779
    ADD CONSTRAINT provider_count_pkey PRIMARY KEY (level, provider);
4779
    ADD CONSTRAINT provider_count_pkey PRIMARY KEY (dataprovider, dataset);
4780 4780

  
4781 4781

  
4782 4782
--
schemas/vegbien.sql
1126 1126
GRANT SELECT ON TABLE provider_count_view TO bien_read;
1127 1127
GRANT SELECT ON TABLE provider_count_view TO public_;
1128 1128

  
1129
ALTER TABLE provider_count ADD PRIMARY KEY (level, provider);
1129
ALTER TABLE provider_count ADD PRIMARY KEY (dataprovider, dataset);
1130 1130
$$;
1131 1131

  
1132 1132

  
......
3841 3841
--
3842 3842

  
3843 3843
CREATE TABLE provider_count (
3844
    level text NOT NULL,
3845
    provider text NOT NULL,
3846
    count bigint,
3844
    dataprovider text NOT NULL,
3845
    dataset text NOT NULL,
3846
    records bigint,
3847 3847
    sourcetype sourcetype,
3848 3848
    observationtype observationtype
3849 3849
);
......
3865 3865
--
3866 3866

  
3867 3867
CREATE VIEW provider_count_view AS
3868
    SELECT s.level, s.provider, s.count, source.sourcetype, source.observationtype FROM ((SELECT 'top-level'::text AS level, analytical_stem.datasource AS provider, count(*) AS count FROM analytical_stem GROUP BY analytical_stem.datasource UNION ALL SELECT 'data owner'::text AS level, sourcename.name AS provider, count(*) AS count FROM ((sourcename JOIN sourcelist USING (sourcelist_id)) JOIN specimenreplicate ON ((specimenreplicate.institution_id = sourcelist.sourcelist_id))) GROUP BY sourcename.name HAVING (count(*) > 0)) s LEFT JOIN source ON ((source.shortname = s.provider))) ORDER BY s.level DESC, s.count DESC, s.provider;
3868
    (SELECT s.dataprovider, '(total)'::text AS dataset, s.records, source.sourcetype, source.observationtype FROM ((SELECT analytical_stem.datasource AS dataprovider, count(*) AS records FROM analytical_stem GROUP BY analytical_stem.datasource) s JOIN source ON ((source.shortname = s.dataprovider))) ORDER BY s.records DESC) UNION ALL (SELECT dataprovider.shortname AS dataprovider, s.dataset, s.records, dataset.sourcetype, COALESCE(dataset.observationtype, dataprovider.observationtype) AS observationtype FROM (((SELECT specimenreplicate.source_id AS dataprovider_id, sourcename.name AS dataset, sourcename.matched_source_id AS dataset_id, count(*) AS records FROM ((specimenreplicate JOIN sourcelist ON ((sourcelist.sourcelist_id = specimenreplicate.institution_id))) JOIN sourcename USING (sourcelist_id)) GROUP BY specimenreplicate.source_id, sourcename.name, sourcename.matched_source_id) s JOIN source dataprovider ON ((dataprovider.source_id = s.dataprovider_id))) LEFT JOIN source dataset ON ((dataset.source_id = s.dataset_id))) ORDER BY dataprovider.shortname, s.records DESC, s.dataset);
3869 3869

  
3870 3870

  
3871 3871
--
......
6014 6014
--
6015 6015

  
6016 6016
ALTER TABLE ONLY provider_count
6017
    ADD CONSTRAINT provider_count_pkey PRIMARY KEY (level, provider);
6017
    ADD CONSTRAINT provider_count_pkey PRIMARY KEY (dataprovider, dataset);
6018 6018

  
6019 6019

  
6020 6020
--

Also available in: Unified diff