63 lines
1.6 KiB
SQL
63 lines
1.6 KiB
SQL
-- Q6: US citizens or foreigners speaking English well
|
|
|
|
CREATE TABLE r6 WITHOUT OIDS AS
|
|
SELECT TID, POWSTATE,POB FROM rt
|
|
WHERE (ENGLISH = 3 OR ENGLISH = -1);
|
|
|
|
|
|
CREATE TABLE f6 WITHOUT OIDS AS
|
|
SELECT ft.* FROM ft, r6
|
|
WHERE ft.tid = r6.tid AND ft.Col IN ('ENGLISH','POWSTATE','POB');
|
|
|
|
CREATE TABLE c6 WITHOUT OIDS AS
|
|
SELECT ct.* FROM ct, f6
|
|
WHERE ct.hid=f6.hid and
|
|
(CASE WHEN f6.Col = 'ENGLISH'
|
|
THEN ct.VALUE = 3
|
|
ELSE f6.Col IN ('POWSTATE','POB')
|
|
END);
|
|
|
|
--DELETE FROM c6
|
|
--where
|
|
--exists(select 1 from f6 _a, f6 _b
|
|
-- where _a.cid = _b.cid and _a.tid = _b.tid and
|
|
-- _a.hid <> _b.hid and _a.hid = c6.hid and
|
|
-- c6.wid not in (select wid from c6 _c
|
|
-- where _b.hid = _c.hid));
|
|
|
|
CREATE TABLE twins6 WITHOUT OIDS AS
|
|
SELECT _a.hid as left, _b.hid as right
|
|
FROM f6 _a, f6 _b
|
|
WHERE _a.cid = _b.cid and _a.tid = _b.tid and _a.hid <> _b.hid;
|
|
|
|
DELETE FROM c6
|
|
where
|
|
exists(select 1 from twins6
|
|
where twins6.left = c6.hid and
|
|
c6.wid not in (select wid from c6 _c
|
|
where twins6.right = _c.hid));
|
|
|
|
|
|
|
|
|
|
--CREATE TABLE DEL6 WITHOUT OIDS AS
|
|
--SELECT TID FROM f6
|
|
--WHERE HID NOT IN (SELECT HID FROM c6);
|
|
|
|
CREATE TABLE DEL6 WITHOUT OIDS AS
|
|
SELECT f6.TID FROM f6 left join c6 on (f6.hid = c6.hid)
|
|
WHERE c6.hid is null;
|
|
|
|
DELETE FROM r6
|
|
WHERE TID IN (SELECT TID FROM DEL6);
|
|
|
|
--DELETE FROM f6
|
|
--WHERE TID IN (SELECT TID FROM DEL6) OR Col NOT IN ('POWSTATE','POB');
|
|
|
|
DELETE FROM f6
|
|
WHERE TID IN (SELECT TID FROM DEL6) OR Col = 'ENGLISH';
|
|
|
|
DELETE FROM c6
|
|
WHERE HID NOT IN (SELECT HID FROM f6);
|
|
|