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