Project

General

Profile

1 5491 aaronmk
SELECT *
2 5721 aaronmk
FROM "nodes.src"
3
JOIN "names.src" USING (tax_id)
4 5491 aaronmk
WHERE "name class" = 'scientific name'
5
;
6
7
ALTER TABLE :table ALTER COLUMN tax_id TYPE integer
8
USING tax_id::integer;
9
ALTER TABLE :table ALTER COLUMN "parent tax_id" TYPE integer
10
USING "parent tax_id"::integer;
11
12
ALTER TABLE :table ADD PRIMARY KEY (tax_id);
13 5820 aaronmk
14
CREATE INDEX ON :table ("parent tax_id");
15
16
ALTER TABLE :table ADD FOREIGN KEY ("parent tax_id") REFERENCES :table (tax_id)
17
    ON UPDATE CASCADE ON DELETE CASCADE;
18 5821 aaronmk
19
-- Make genus (mostly) globally unique by removing kingdom Animalia/Metazoa
20
DELETE FROM :table WHERE tax_id = 33208; -- delete cascades to descendants
21 5835 aaronmk
22
-- Make genus completely globally unique by removing duplicates
23
DELETE FROM :table
24
WHERE rank IN ('genus', 'subgenus')
25
AND name_txt IN (
26
    SELECT name_txt
27
    FROM :table
28
    WHERE rank IN ('genus', 'subgenus')
29
    GROUP BY name_txt
30
    HAVING count(*) > 1
31
)
32
;