Project

General

Profile

« Previous | Next » 

Revision 6908

schemas/vegbien.sql: Merged provider_view, provider_count, and owner_count into provider_count, using the combining query for Brad's data providers page at <http://bien.nceas.ucsb.edu/bien/people/data-providers/>

View differences:

vegbien.sql
973 973

  
974 974

  
975 975
--
976
-- Name: sync_owner_count_to_view(); Type: FUNCTION; Schema: public; Owner: -
977
--
978

  
979
CREATE FUNCTION sync_owner_count_to_view() RETURNS void
980
    LANGUAGE sql
981
    AS $$
982
DROP TABLE IF EXISTS owner_count;
983
CREATE TABLE owner_count AS SELECT * FROM owner_count_view LIMIT 0;
984

  
985
GRANT SELECT ON TABLE owner_count TO bien_read;
986
GRANT SELECT ON TABLE owner_count TO public_;
987
GRANT SELECT ON TABLE owner_count_view TO bien_read;
988
GRANT SELECT ON TABLE owner_count_view TO public_;
989

  
990
ALTER TABLE owner_count ADD PRIMARY KEY (owner);
991
$$;
992

  
993

  
994
--
995 976
-- Name: sync_provider_count_to_view(); Type: FUNCTION; Schema: public; Owner: -
996 977
--
997 978

  
......
1006 987
GRANT SELECT ON TABLE provider_count_view TO bien_read;
1007 988
GRANT SELECT ON TABLE provider_count_view TO public_;
1008 989

  
1009
ALTER TABLE provider_count ADD PRIMARY KEY (provider);
990
ALTER TABLE provider_count ADD PRIMARY KEY (level, provider);
1010 991
$$;
1011 992

  
1012 993

  
......
3371 3352

  
3372 3353

  
3373 3354
--
3374
-- Name: owner_count; Type: TABLE; Schema: public; Owner: -; Tablespace: 
3375
--
3376

  
3377
CREATE TABLE owner_count (
3378
    owner text NOT NULL,
3379
    count bigint
3380
);
3381

  
3382

  
3383
--
3384
-- Name: sourcename; Type: TABLE; Schema: public; Owner: -; Tablespace: 
3385
--
3386

  
3387
CREATE TABLE sourcename (
3388
    sourcelist_id integer NOT NULL,
3389
    name text NOT NULL,
3390
    matched_source_id integer
3391
);
3392

  
3393

  
3394
--
3395
-- Name: owner_count_view; Type: VIEW; Schema: public; Owner: -
3396
--
3397

  
3398
CREATE VIEW owner_count_view AS
3399
    SELECT sourcename.name AS owner, count(*) AS count FROM ((sourcename JOIN sourcelist USING (sourcelist_id)) JOIN specimenreplicate ON ((specimenreplicate.institution_id = sourcelist.sourcelist_id))) GROUP BY sourcename.name;
3400

  
3401

  
3402
--
3403 3355
-- Name: party_party_id_seq; Type: SEQUENCE; Schema: public; Owner: -
3404 3356
--
3405 3357

  
......
3721 3673
--
3722 3674

  
3723 3675
CREATE TABLE provider_count (
3676
    level text NOT NULL,
3724 3677
    provider text NOT NULL,
3725
    count bigint
3678
    count bigint,
3679
    sourcetype sourcetype,
3680
    observationtype observationtype
3726 3681
);
3727 3682

  
3728 3683

  
3729 3684
--
3730
-- Name: provider_count_view; Type: VIEW; Schema: public; Owner: -
3685
-- Name: sourcename; Type: TABLE; Schema: public; Owner: -; Tablespace: 
3731 3686
--
3732 3687

  
3733
CREATE VIEW provider_count_view AS
3734
    SELECT analytical_stem.datasource AS provider, count(*) AS count FROM analytical_stem GROUP BY analytical_stem.datasource;
3688
CREATE TABLE sourcename (
3689
    sourcelist_id integer NOT NULL,
3690
    name text NOT NULL,
3691
    matched_source_id integer
3692
);
3735 3693

  
3736 3694

  
3737 3695
--
3738
-- Name: provider_view; Type: VIEW; Schema: public; Owner: -
3696
-- Name: provider_count_view; Type: VIEW; Schema: public; Owner: -
3739 3697
--
3740 3698

  
3741
CREATE VIEW provider_view AS
3742
    (SELECT source.shortname AS name, source.sourcetype, source.observationtype FROM source ORDER BY source.sourcetype DESC NULLS LAST, source.shortname) UNION ALL (SELECT sourcename.name, 'herbarium'::sourcetype AS sourcetype, 'specimen'::observationtype AS observationtype FROM sourcename WHERE (sourcename.matched_source_id IS NULL) ORDER BY sourcename.name);
3699
CREATE VIEW provider_count_view AS
3700
    SELECT s.level, s.provider, s.count, COALESCE(source.sourcetype, 'herbarium'::sourcetype) AS sourcetype, COALESCE(source.observationtype, 'specimen'::observationtype) AS 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) s LEFT JOIN source ON ((source.shortname = s.provider))) ORDER BY s.level DESC, s.count DESC, s.provider;
3743 3701

  
3744 3702

  
3745 3703
--
......
5284 5242

  
5285 5243

  
5286 5244
--
5287
-- Data for Name: owner_count; Type: TABLE DATA; Schema: public; Owner: -
5288
--
5289

  
5290

  
5291

  
5292
--
5293 5245
-- Data for Name: party; Type: TABLE DATA; Schema: public; Owner: -
5294 5246
--
5295 5247

  
......
5790 5742

  
5791 5743

  
5792 5744
--
5793
-- Name: owner_count_pkey; Type: CONSTRAINT; Schema: public; Owner: -; Tablespace: 
5794
--
5795

  
5796
ALTER TABLE ONLY owner_count
5797
    ADD CONSTRAINT owner_count_pkey PRIMARY KEY (owner);
5798

  
5799

  
5800
--
5801 5745
-- Name: party_pkey; Type: CONSTRAINT; Schema: public; Owner: -; Tablespace: 
5802 5746
--
5803 5747

  
......
5890 5834
--
5891 5835

  
5892 5836
ALTER TABLE ONLY provider_count
5893
    ADD CONSTRAINT provider_count_pkey PRIMARY KEY (provider);
5837
    ADD CONSTRAINT provider_count_pkey PRIMARY KEY (level, provider);
5894 5838

  
5895 5839

  
5896 5840
--
......
8274 8218

  
8275 8219

  
8276 8220
--
8277
-- Name: owner_count; Type: ACL; Schema: public; Owner: -
8278
--
8279

  
8280
REVOKE ALL ON TABLE owner_count FROM PUBLIC;
8281
REVOKE ALL ON TABLE owner_count FROM bien;
8282
GRANT ALL ON TABLE owner_count TO bien;
8283
GRANT SELECT ON TABLE owner_count TO bien_read;
8284
GRANT SELECT ON TABLE owner_count TO public_;
8285

  
8286

  
8287
--
8288
-- Name: sourcename; Type: ACL; Schema: public; Owner: -
8289
--
8290

  
8291
REVOKE ALL ON TABLE sourcename FROM PUBLIC;
8292
REVOKE ALL ON TABLE sourcename FROM bien;
8293
GRANT ALL ON TABLE sourcename TO bien;
8294
GRANT SELECT ON TABLE sourcename TO bien_read;
8295
GRANT SELECT ON TABLE sourcename TO public_;
8296

  
8297

  
8298
--
8299
-- Name: owner_count_view; Type: ACL; Schema: public; Owner: -
8300
--
8301

  
8302
REVOKE ALL ON TABLE owner_count_view FROM PUBLIC;
8303
REVOKE ALL ON TABLE owner_count_view FROM bien;
8304
GRANT ALL ON TABLE owner_count_view TO bien;
8305
GRANT SELECT ON TABLE owner_count_view TO bien_read;
8306
GRANT SELECT ON TABLE owner_count_view TO public_;
8307

  
8308

  
8309
--
8310 8221
-- Name: partymember; Type: ACL; Schema: public; Owner: -
8311 8222
--
8312 8223

  
......
8378 8289

  
8379 8290

  
8380 8291
--
8292
-- Name: sourcename; Type: ACL; Schema: public; Owner: -
8293
--
8294

  
8295
REVOKE ALL ON TABLE sourcename FROM PUBLIC;
8296
REVOKE ALL ON TABLE sourcename FROM bien;
8297
GRANT ALL ON TABLE sourcename TO bien;
8298
GRANT SELECT ON TABLE sourcename TO bien_read;
8299
GRANT SELECT ON TABLE sourcename TO public_;
8300

  
8301

  
8302
--
8381 8303
-- Name: provider_count_view; Type: ACL; Schema: public; Owner: -
8382 8304
--
8383 8305

  
......
8389 8311

  
8390 8312

  
8391 8313
--
8392
-- Name: provider_view; Type: ACL; Schema: public; Owner: -
8393
--
8394

  
8395
REVOKE ALL ON TABLE provider_view FROM PUBLIC;
8396
REVOKE ALL ON TABLE provider_view FROM bien;
8397
GRANT ALL ON TABLE provider_view TO bien;
8398
GRANT SELECT ON TABLE provider_view TO bien_read;
8399
GRANT SELECT ON TABLE provider_view TO public_;
8400

  
8401

  
8402
--
8403 8314
-- Name: revision; Type: ACL; Schema: public; Owner: -
8404 8315
--
8405 8316

  

Also available in: Unified diff