/* Jump to: Chapter 12 Table of Contents Chapter 14 */
/*
*/
/* Jump to: Next Section */
DATA myRandoms;
DO sernum = 1 TO 2E7;
myRandom = ROUND(1E6*RANUNI(1) );
OUTPUT;
END;
RUN;
PROC SQL STIMER;
SELECT COUNT(*)
INTO : count654321
FROM myRandoms
WHERE myRandom = 654321
;
%PUT &count654321 rows counted.;
QUIT;
PROC SQL STIMER;
CREATE INDEX myRandom ON myRandoms;
QUIT;
/* Jump to: Top of Section Top of Chapter */
/* Jump to: Next Section */
DATA roster;
DO i = 1 TO 3e4; DROP i;
name = i;
phone = i + 0.1;
email = i + 0.2;
OUTPUT;
IF RANUNI(111)>0.8 THEN name = name + 0.01;
IF RANUNI(111)>0.8 THEN OUTPUT;
END;
RUN;
PROC SQL STIMER;
CREATE TABLE same_phone AS
SELECT DISTINCT roster.name,
copy.name AS diff_name
FROM roster JOIN roster AS copy
ON roster.phone=copy.phone
WHERE roster.name LT copy.name
;
QUIT;
PROC SQL STIMER;
CREATE TABLE slow AS
SELECT DISTINCT roster.name,
copy.name AS diff_name
FROM roster JOIN roster AS copy
ON roster.phone=copy.phone OR
roster.email=copy.email
WHERE roster.name LT copy.name;
QUIT;
PROC SQL STIMER;
CREATE TABLE fast AS
SELECT roster.name,
copy.name AS diff_name
FROM roster JOIN roster AS copy
ON roster.phone=copy.phone
WHERE roster.name NE copy.name
UNION
SELECT roster.name,
copy.name AS diff_name
FROM roster JOIN roster AS copy
ON roster.email=copy.email
WHERE roster.name NE copy.name;
QUIT;
/* Jump to: Top of Section Top of Chapter */