70 lines
1.8 KiB
SQL
70 lines
1.8 KiB
SQL
-- Query 2: persons born outside USA that can not speak English well
|
|
|
|
CREATE TABLE r2 WITHOUT OIDS AS
|
|
SELECT TID,POWSTATE,CITIZEN,IMMIGR FROM rt
|
|
WHERE (CITIZEN <> 0) AND (ENGLISH > 3 OR ENGLISH = -1);
|
|
|
|
CREATE TABLE f2 WITHOUT OIDS AS
|
|
SELECT ft.* FROM ft, r2
|
|
WHERE ft.tid = r2.tid and ft.Col IN ('IMMIGR','CITIZEN','ENGLISH','POWSTATE');
|
|
|
|
CREATE TABLE c2 WITHOUT OIDS AS
|
|
SELECT ct.* FROM ct, f2
|
|
WHERE ct.hid=f2.hid and
|
|
(CASE WHEN f2.Col = 'CITIZEN'
|
|
THEN ct.VALUE <> 0
|
|
ELSE (CASE WHEN f2.Col = 'ENGLISH'
|
|
THEN ct.VALUE > 3
|
|
ELSE f2.Col IN ('POWSTATE','IMMIGR')
|
|
END)
|
|
END);
|
|
|
|
|
|
|
|
--DELETE FROM c2
|
|
--where
|
|
--exists(select 1 from f2 _a, f2 _b
|
|
-- where _a.cid = _b.cid and _a.tid = _b.tid and
|
|
-- _a.hid <> _b.hid and _a.hid = c2.hid and
|
|
-- c2.wid not in (select wid from c2 _c
|
|
-- where _b.hid = _c.hid));
|
|
|
|
|
|
CREATE TABLE twins2 WITHOUT OIDS AS
|
|
SELECT _a.hid as left, _b.hid as right
|
|
FROM f2 _a, f2 _b
|
|
WHERE _a.cid = _b.cid and _a.tid = _b.tid and _a.hid <> _b.hid;
|
|
|
|
DELETE FROM c2
|
|
where
|
|
exists(select 1 from twins2
|
|
where twins2.left = c2.hid and
|
|
c2.wid not in (select wid from c2 _c
|
|
where twins2.right = _c.hid));
|
|
|
|
|
|
--CREATE TABLE DEL2 WITHOUT OIDS AS
|
|
--SELECT TID FROM f2
|
|
--WHERE HID NOT IN (SELECT HID FROM c2);
|
|
|
|
CREATE TABLE DEL2 WITHOUT OIDS AS
|
|
SELECT f2.TID FROM f2 left join c2 on (f2.hid = c2.hid)
|
|
WHERE c2.hid is null;
|
|
|
|
|
|
|
|
DELETE FROM r2
|
|
WHERE TID IN (SELECT TID FROM DEL2);
|
|
|
|
DELETE FROM f2
|
|
WHERE TID IN (SELECT TID FROM DEL2) OR Col = 'ENGLISH';
|
|
|
|
--DELETE FROM f2
|
|
--WHERE TID IN (SELECT TID FROM DEL2) OR Col NOT IN ('POWSTATE','IMMIGR','CITIZEN');
|
|
|
|
DELETE FROM c2
|
|
WHERE HID NOT IN (SELECT HID FROM f2);
|
|
|
|
|
|
|