pdbench/census/Queries/q6.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);