Lesson 32: Introduction to SAS SQL
Lesson 32: Introduction to SAS SQLOverview
PROC SQL is a powerful tool for data manipulation and querying. It can perform many functions such as the conventional DATA and PROC steps but with fewer statements and computer resources. In this lesson, we will investigate how to select, subset, sort, summarize, and group data with SQL procedure.
Objectives
- Know about the basic syntax of PROC SQL and its uniqueness
- Use SELECT and FROM clauses to query a single table
- Display the result of a query in a predefined ODS destination
- Generate and name the new table with the CREATE TABLE statement
- Use the shortcut (*) to select all rows in a table
- Create new columns with the SELECT clause
- Use options in the SELECT statement to change variables’ format, label, and length
- Use the OUTOBS= option in the PROC SQL statement to limit the number of rows in the display
- Use the CASE operator inside the SELECT clause to conditionally process data
- Use the WHERE clause and its operators to subset a table
- Insert the keyword CALCULATED inside the WHERE clause to subset a table based on the calculated results
- Use the ORDER BY clause to sort data in ascending order by default
- Use its location number in the SELECT clause to reference a column
- Add the keyword DESC to sort data descendingly
- Summarize data with aggregation functions provided in PROC SQL
- Use multiple columns as arguments inside a summary function
- Select the column(s) besides a summary function with no GROUP BY clause
- Use GROUP BY clause with summary functions to summarize groups of data
- Use the COUNT() function to count non-missing values of rows of a table, a column, or non-duplicate values
- Use the HAVING clause to subset data
- Understand the differences between the HAVING and WHERE clause
- Query multiple tables by listing multiple tables in the FROM clause
- Understand a Cartesian product in SAS SQL
- Use the WHERE clause to complete the inner join
32.1 - Proc SQL Basics
32.1 - Proc SQL BasicsPROC SQL is a procedure that SAS developed for the implementation of Structured Query Language. You can use this procedure to modify, retrieve and report data in tables and views (created on tables). Just as with other SAS procedures, PROC SQL also has basic syntax structures. It takes the following general form:
PROC SQL;
SELECT column-1<,…column-n>
FROM table-1|view-1<,…table-n|view-n>
<WHERE expression>
<GROUP BY column-1<,…column-n>>
<HAVING expression>
<ORDER BY column-1<,…column-n>>;
QUIT;
First of all, you may see differences in terminology between SQL and other SAS steps. For example, the data file is called data set in other SAS steps, but the table is in SQL. Correspondingly, records are called observations in the previous lessons, but rows in SQL tables, while we call a field of data set a variable, but a column in this lesson.
Other SAS steps | SQL Procedure |
---|---|
data set | table |
observation | row |
variable | column |
Another thing that needs your attention is that, unlike other SAS procedures, there could be one or a few SELECT statements inside PROC SQL. One SELECT statement is called a query, which is composed of many clauses, like SELECT, FROM, WHERE, GROUP BY, HAVING, and ORDER BY. The order of these clauses is important. They must appear in the order as shown above.
We will use the whole lesson to work our way through all these keywords in PROC SQL. Let’s start with the most basic one.
Example 32.1
The following SAS SQL code is just query that retrieves data from a single table:
libname stat482 "X:\MG\stat480~483\proc sql";
PROC SQL;
select ID,
SATM,
SATV
from stat482.survey;
QUIT;
id | SATM | SATV |
---|---|---|
1001 | 700 | 700 |
1002 | 700 | 500 |
1003 | 470 | 470 |
1004 | 710 | 560 |
1005 | 600 | 520 |
1006 | 610 | 720 |
1007 | 710 | 670 |
1008 | 610 | 580 |
1009 | 690 | 620 |
1010 | 580 | 540 |
1011 | 690 | 690 |
1012 | . | . |
1013 | 450 | 580 |
1014 | 700 | 700 |
1015 | 400 | 600 |
1016 | 640 | 600 |
1017 | 720 | 580 |
1018 | 600 | 750 |
1019 | 600 | 720 |
1020 | 600 | 630 |
1021 | 600 | 300 |
1022 | 670 | 630 |
1023 | 670 | 680 |
1024 | 600 | 730 |
1025 | 560 | 680 |
1026 | 560 | 560 |
1027 | 550 | 600 |
1028 | 610 | 600 |
1029 | 680 | 680 |
1030 | 450 | 450 |
1031 | 640 | 620 |
1032 | 300 | 400 |
1033 | 650 | 600 |
1034 | 670 | 630 |
1035 | 500 | 550 |
1036 | 530 | 760 |
1037 | 500 | 400 |
1038 | 680 | 650 |
1039 | 560 | 560 |
1040 | . | . |
1041 | 620 | 760 |
1042 | 640 | 640 |
1043 | 590 | 640 |
1044 | 570 | 560 |
1045 | 680 | 710 |
1046 | 660 | 580 |
1047 | 700 | 570 |
1048 | 650 | 590 |
1049 | 620 | 640 |
1050 | 450 | 450 |
1051 | 650 | 550 |
1052 | 600 | 620 |
1053 | 420 | 490 |
1054 | 630 | 580 |
1055 | 760 | 600 |
1056 | 600 | 500 |
1057 | 600 | 600 |
1058 | 585 | 590 |
1059 | 800 | 750 |
1060 | 540 | 550 |
1061 | 680 | 550 |
1062 | 670 | 670 |
1063 | 560 | 590 |
1064 | 550 | 700 |
1065 | 575 | 600 |
1066 | 450 | 400 |
1067 | 640 | 560 |
1068 | 550 | 610 |
1069 | 600 | 490 |
1070 | 600 | 610 |
1071 | 650 | 660 |
1072 | 570 | 570 |
1073 | 600 | 550 |
1074 | 500 | 450 |
1075 | 650 | 550 |
1076 | 590 | 570 |
1077 | 560 | 610 |
1078 | 570 | 490 |
1079 | 700 | 640 |
1080 | 660 | 660 |
1081 | 620 | 600 |
1082 | 550 | 690 |
1083 | 560 | 580 |
1084 | 690 | 690 |
1085 | 740 | 680 |
1086 | 540 | 570 |
1087 | 580 | 570 |
1088 | . | . |
1089 | 500 | 600 |
1090 | 560 | 330 |
1091 | 800 | 650 |
1092 | 620 | 530 |
1093 | 560 | 560 |
1094 | 640 | 710 |
1095 | 690 | 650 |
1096 | 750 | 550 |
1097 | 640 | 430 |
1098 | 540 | 520 |
1099 | 700 | 600 |
1100 | 490 | 520 |
1101 | 570 | 490 |
1102 | 620 | 630 |
1103 | 450 | 500 |
1104 | . | . |
1105 | 510 | 680 |
1106 | 620 | 500 |
1107 | 630 | 530 |
1108 | 500 | 550 |
1109 | 500 | 490 |
1110 | 700 | 600 |
1111 | 540 | 570 |
1112 | . | . |
1113 | 650 | 550 |
1114 | 530 | 530 |
1115 | 580 | 620 |
1116 | 560 | 550 |
1117 | 570 | 480 |
1118 | 650 | 700 |
1119 | 640 | 630 |
1120 | 680 | 670 |
1121 | 450 | 500 |
1122 | 670 | 510 |
1123 | 560 | 530 |
1124 | 430 | 440 |
1125 | 470 | 510 |
1126 | 720 | 570 |
1127 | 600 | 650 |
1128 | 570 | 650 |
1129 | 500 | 540 |
1130 | 660 | 620 |
1131 | 730 | 800 |
1132 | 420 | 420 |
1133 | 450 | 550 |
1134 | 650 | 600 |
1135 | 520 | 650 |
1136 | 650 | 600 |
1137 | 580 | 640 |
1138 | 560 | 580 |
1139 | 530 | 600 |
1140 | 540 | 600 |
1141 | . | . |
1142 | 720 | 500 |
1143 | 550 | 500 |
1144 | 640 | 600 |
1145 | 500 | 450 |
1146 | 580 | 600 |
1147 | 580 | 620 |
1148 | 620 | 640 |
1149 | 640 | 700 |
1150 | 630 | 650 |
1151 | 590 | 590 |
1152 | 600 | 500 |
1153 | 550 | 630 |
1154 | 520 | 450 |
1155 | . | . |
1156 | 780 | 540 |
1157 | 400 | 400 |
1158 | 500 | 580 |
1159 | 640 | 440 |
1160 | 700 | 700 |
1161 | 600 | 630 |
1162 | 710 | 710 |
1163 | 600 | 590 |
1164 | 790 | 460 |
1165 | 560 | 500 |
1166 | 700 | 520 |
1167 | 520 | 550 |
1168 | 650 | 560 |
1169 | 650 | 670 |
1170 | 610 | 590 |
1171 | 480 | 520 |
1172 | 780 | 580 |
1173 | 580 | 590 |
1174 | 680 | 600 |
1175 | 640 | 600 |
1176 | 600 | 590 |
1177 | 520 | 500 |
1178 | 700 | 600 |
1179 | 660 | 660 |
1180 | 720 | 500 |
1181 | 600 | 550 |
1182 | 640 | 460 |
1183 | 490 | 520 |
1184 | . | . |
1185 | 600 | 600 |
1186 | 480 | 580 |
1187 | 780 | 660 |
1188 | 670 | 550 |
1189 | 580 | 600 |
1190 | 560 | 520 |
1191 | 580 | 480 |
1192 | . | . |
1193 | 500 | 500 |
1194 | 640 | 600 |
1195 | 570 | 540 |
1196 | 480 | 560 |
1197 | 600 | 700 |
1198 | 450 | 600 |
1199 | 620 | 640 |
1200 | 650 | 590 |
1201 | 760 | 660 |
1202 | 460 | 540 |
1203 | 500 | 610 |
1204 | 650 | 630 |
1205 | 550 | 550 |
1206 | 620 | 630 |
1207 | 640 | 670 |
1208 | 550 | 400 |
1209 | 580 | 580 |
1210 | 660 | 590 |
1211 | 650 | 570 |
1212 | 570 | 480 |
1213 | 425 | . |
1214 | 590 | 500 |
1215 | 650 | 630 |
1216 | 680 | 600 |
1217 | 620 | 400 |
1218 | 540 | 560 |
1219 | 630 | 590 |
1220 | 480 | 480 |
1221 | 590 | 610 |
1222 | 510 | 680 |
1223 | . | . |
1224 | 650 | 630 |
1225 | 640 | 630 |
1226 | 630 | 520 |
To run the program above, you will need to save the SAS data file (survey.sas7bdat) to your computer first. Right-click the link and select the “Save link as…”. A save dialog box will appear and allow you to save the file to the location you choose on your computer. Edit the LIBNAME statement to reflect the directory in which you saved the survey data set. Then run the program and check the output.
The SQL procedure in this code represents the most basic form of the procedure. Like other SAS procedures, you need to run PROC SQL at the beginning to invoke it. Inside the procedure, there is only one statement starting with SELECT, which chooses the columns you want. You can list as many columns as needed, separated by commas. Another clause is FROM, which is used to specify the table(s). PROC SQL follows the same protocol of SAS file names. Here we used a two-level name to reference the permanent file. Just as you read the code, this program is used to select three columns (student id, SAT Math score and SAS Verbal score) from the table.
If you use the SAS list output as default, the results of a query will be displayed in the SAS output window. For SAS9.2 and above, the default output will be html. You can also change the open ODS destinations to pdf, rtf or others for the output.
Example 32.2
The following SAS program changes the ODS destination from listing to pdf. So the output will be saved under the predefined directory as a pdf file.
ods listing close;
ods pdf file="X:\MG\stat480~483\proc sql\sat_scores.pdf";
PROC SQL;
select ID,
SATM,
SATV
from stat482.survey;
QUIT;
ods pdf close;
ods listing;
The PROC SQL part in the above program is the same as in the previous example. The added code is to close the current listing output and open the pdf destination and save the pdf output generated by the SQL procedure that follows the specified file name. The end part of ODS statements tells SAS to close the pdf destination and open the listing again.
In some cases, you may want to create a new table from a query. To do so, you need the CREATE TABLE statement with the keyword AS and along with other clauses used in PROC SQL, such as SELECT, or FROM. Below is the basic syntax of CREATE TABLE statement from a query result.
CREATE TABLE table-name AS
SELECT column-1<,…column-n>
FROM table-1|view-1<,…table-n|view-n>
<optional query clauses>;
Example 32.3
The following SAS program uses the CREATE TABLE statement to create a new table named SAT_scores, which contains student ID, SAT math scores, and verbal scores.
PROC SQL;
CREATE TABLE SAT_Scores as
select ID,
SATM,
SATV
from stat482.survey;
QUIT;
Launch and run the SAS program. You may notice that there is no output displayed in the SAS output window or any open ODS destination. That’s because the CREATE TABLE statement suppresses the printed output of the query. However, if you check the SAS log window, it shows a message that indicates that the table has been created, and the number of rows and columns in the table.
167 PROC SQL;
168 CREATE TABLE SAT_Scores as
169 select ID,
170 SATM,
171 SATV
172 from stat482.survey;
ERROR: Libref STAT482 is not assigned.
173 QUIT;
NOTE: The SAS System stopped processing this step because of errors.
NOTE: PROCEDURE SQL used (Total process time):
real time 0.01 seconds
cpu time 0.01 seconds
In this example, table SAT_scores has 226 rows and 3 columns. The new table’s columns have the same attributes (type, length, format, label) as those of the selected source columns.
From the previous three examples, you now have some idea about what PROC SQL is like to work with. Let’s summarize what makes it so unique from other SAS procedures.
- Unlike other SAS procedures which contain many statements, the SQL procedure may consist of one or more than one SELECT statement. Each SELECT statement contains several clauses, like SELECT, FROM, WHERE, and ORDER BY. But the SELECT and FROM clauses are essential and indispensable. Other clauses are optional. All clauses have to be written in the order listed in the syntax. For each SELECT statement, only one semicolon is needed at the end of the statement.
- No RUN statement is required for PROC SQL to execute. SQL procedure will continue to run after you submit the program. To end it, you have to submit another PROC step, a DATA step, or a QUIT statement.
32.2 - Using the SELECT Clause
32.2 - Using the SELECT ClauseIn the previous section, we learned the basics of PROC SQL. Next, we will investigate more details about the SELECT statement and how to use it to retrieve data, create new columns, and what options are available for data manipulation.
Example 32.4
The following SAS program creates a new temporary table with all columns retrieved from permanent file traffic.sas7bdat:
PROC SQL;
CREATE TABLE traffic as
select *
from stat482.traffic;
QUIT;
PROC CONTENTS data=traffic VARNUM;
RUN;
PROC CONTENTS data=stat482.traffic VARNUM;
RUN;
Variables in Creation Order | ||||
---|---|---|---|---|
# | Variable | Type | Len | Informat |
1 | ID | Num | 8 | |
2 | Count_Location | Char | 11 | $11. |
3 | Street | Char | 27 | $27. |
4 | Date_of_Count | Num | 8 | |
5 | Passing_Vehicle_Volume | Num | 8 |
First, you need to download the permanent SAS data file traffic to your own computer. Revise the libname
statement as needed. Then run the program.
One thing you need to know about this program is the shortcut, noted with an asterisk (*) after SELECT. The asterisk refers to all columns in the original table. So, this code is to select all columns in the permanent file into the temporary file, traffic.
To check the data, you may use the other procedures we learned in previous lessons, such as the PRINT procedure. In the above program, PROC CONTENTS have been used to check the variable attributes in the original and the new table. As we mentioned in the previous section, the variables chosen from other table(s) keep the same attributes.
Besides selecting original columns, the SELECT clause can also be used to create new columns, just as we used assignment statements in the DATA step to create new variables.
Example 32.5
Use the following program to create new columns with the SELECT statement:
PROC SQL;
select id,
count_location,
scan(count_location,-1,' ') as orientation,
street,
passing_vehicle_volume * 0.5 as weekends_traffic_volume
from traffic;
QUIT;
ID | Count_Location | orientation | Street | weekends_traffic_volume |
---|---|---|---|---|
1 | 2523 West | West | 71st Street | 7300 |
2 | 1708 West | West | 71st Street | 7300 |
3 | 1275 West | West | 71st Street | 8250 |
5 | 920 West | West | 71st Street | 9100 |
6 | 758 West | West | 71st Street | 10800 |
7 | 240 East | East | 71st St | 9150 |
9 | 2050 East | East | 71st St | 4300 |
10 | 8539 South | South | Commercial Ave | 5000 |
11 | 8933 South | South | Commercial Ave | 5250 |
12 | 9379 South | South | Commercial Ave | 6350 |
13 | 9730 South | South | Commercial Ave | 4500 |
14 | 4107 South | South | Cottage Grove Ave | 5400 |
15 | 4750 South | South | Cottage Grove Ave | 7100 |
16 | 5325 South | South | Cottage Grove Ave | 6850 |
17 | 6144 South | South | Cottage Grove Ave | 10450 |
18 | 6533 South | South | Cottage Grove Ave | 9550 |
19 | 6820 South | South | Cottage Grove Ave | 10850 |
20 | 7346 South | South | Cottage Grove Ave | 8900 |
21 | 8800 South | South | Cottage Grove Ave | 11200 |
23 | 10101 South | South | Cottage Grove Ave | 6250 |
24 | 1603 South | South | Damen Ave | 9400 |
25 | 1959 South | South | Damen Ave | 7650 |
26 | 2259 South | South | Damen Ave | 7400 |
27 | 2566 South | South | Damen Ave | 14000 |
28 | 3460 South | South | Damen Ave | 4050 |
29 | 3630 South | South | Damen Ave | 3500 |
31 | 4936 South | South | Damen Ave | 5450 |
32 | 5929 South | South | Damen Ave | 7450 |
33 | 6755 South | South | Damen Ave | 8300 |
34 | 7509 South | South | Damen Ave | 6150 |
36 | 3030 South | South | Dr Martin Luther King Jr Dr | 9950 |
37 | 3748 South | South | Dr Martin Luther King Jr Dr | 7800 |
38 | 4358 South | South | Dr Martin Luther King Jr Dr | 7250 |
39 | 5450 South | South | Dr Martin Luther King Jr Dr | 5900 |
41 | 7718 South | South | Dr Martin Luther King Jr Dr | 8350 |
42 | 9243 South | South | Dr Martin Luther King Jr Dr | 7750 |
43 | 10326 South | South | Dr Martin Luther King Jr Dr | 5550 |
44 | 7669 South | South | Exchange Ave | 4150 |
45 | 7952 South | South | Exchange Ave | 3700 |
47 | 1407 South | South | Indiana Ave | 4150 |
48 | 1933 South | South | Indiana Ave | 3050 |
52 | 3420 South | South | Indiana Ave | 3700 |
53 | 3654 South | South | Indiana Ave | 3000 |
55 | 5848 South | South | Indiana Ave | 2200 |
56 | 10320 South | South | Indianapolis Ave | 19250 |
57 | 6602 South | South | Jeffery Blvd | 10600 |
58 | 6841 South | South | Jeffery Blvd | 11850 |
60 | 7335 South | South | Jeffery Blvd | 12150 |
61 | 8127 South | South | Jeffery Blvd | 6700 |
62 | 8645 South | South | Jeffery Blvd | 9650 |
63 | 8547 South | South | Jeffery Blvd | 6200 |
64 | 9633 South | South | Jeffery Ave | 3850 |
65 | 7345 South | South | Dr Martin Luther King Jr Dr | 9450 |
66 | 2350 South | South | Dr Martin Luther King Jr Dr | 9050 |
67 | 5424 South | South | Lake Park Ave | 9100 |
68 | 1255 South | South | Michigan Ave | 10300 |
69 | 2317 South | South | Michigan Ave | 6500 |
70 | 2950 South | South | Michigan Ave | 6600 |
71 | 3311 South | South | Michigan Ave | 4050 |
72 | 3721 South | South | Michigan Ave | 4000 |
73 | 4563 South | South | Michigan Ave | 3950 |
74 | 5352 South | South | Michigan Ave | 3950 |
75 | 9642 South | South | Michigan Ave | 4050 |
77 | 6848 South | South | South Shore Dr | 17550 |
78 | 7732 South | South | South Shore Dr | 8200 |
79 | 2425 East | East | South Shore Dr | 8650 |
81 | 1420 South | South | State St | 11550 |
82 | 3333 South | South | State St | 5050 |
83 | 4605 South | South | State St | 10750 |
84 | 5625 South | South | State St | 8050 |
85 | 6416 South | South | State St | 9650 |
86 | 7539 South | South | State St | 6250 |
87 | 8149 South | South | State St | 3750 |
88 | 9124 South | South | State St | 2450 |
89 | 9940 South | South | State St | 3650 |
90 | 2130 South | South | Wentworth Ave | 2250 |
91 | 6629 South | South | Wentworth Ave | 3550 |
92 | 9532 South | South | Wentworth Ave | 2450 |
93 | 3430 South | South | Archer Ave | 11700 |
94 | 2140 South | South | Archer Ave | 5900 |
95 | 4709 South | South | Archer Ave | 13900 |
96 | 2345 South | South | Archer Ave | 6650 |
97 | 3247 South | South | Archer Ave | 7550 |
98 | 320 South | South | Ashland Ave | 14650 |
99 | 711 South | South | Ashland Ave | 19350 |
100 | 1447 South | South | Ashland Ave | 19150 |
103 | 6154 South | South | Ashland Ave | 11750 |
104 | 6480 South | South | Ashland Ave | 13550 |
105 | 7132 South | South | Ashland Ave | 17500 |
106 | 7500 South | South | Ashland Ave | 13150 |
107 | 8140 South | South | Ashland Ave | 13150 |
108 | 8822 South | South | Ashland Ave | 13900 |
109 | 719 South | South | Clark St | 6800 |
110 | 996 South | South | Clark St | 11300 |
111 | 1515 South | South | Clark St | 11500 |
112 | 1918 South | South | Clark St | 7400 |
113 | 2123 South | South | Clark St | 6400 |
114 | 700 South | South | Halsted St | 7800 |
115 | 1302 South | South | Halsted St | 6700 |
116 | 3541 South | South | Halsted St | 7650 |
117 | 5348 South | South | Halsted St | 7500 |
118 | 6020 South | South | Halsted St | 6600 |
119 | 6722 South | South | Halsted St | 6750 |
120 | 7328 South | South | Halsted St | 8350 |
121 | 8728 South | South | Halsted St | 15450 |
122 | 9550 South | South | Halsted St | 18950 |
124 | 7925 South | South | Vincennes Ave | 10600 |
125 | 8940 South | South | Vincennes Ave | 8150 |
126 | 9520 South | South | Vincennes Ave | 6250 |
127 | 10122 South | South | Vincennes Ave | 6850 |
129 | 10748 South | South | Vincennes Ave | 9000 |
130 | 721 South | South | Western Ave | 14750 |
131 | 2446 South | South | Western Ave | 12750 |
132 | 3225 South | South | Western Ave | 17650 |
133 | 4028 South | South | Western Ave | 12800 |
135 | 6642 South | South | Western Ave | 19550 |
136 | 7234 South | South | Western Ave | 20250 |
137 | 7521 South | South | Western Ave | 13650 |
138 | 8941 South | South | Western Ave | 15400 |
139 | 9933 South | South | Western Ave | 17850 |
141 | 10630 South | South | Western Ave | 18300 |
142 | 5420 South | South | Western Blvd | 10050 |
143 | 9750 South | South | Stony Island Ave | 21750 |
144 | 7648 South | South | Stony Island Ave | 36450 |
145 | 8450 South | South | Stony Island Ave | 30750 |
146 | 9348 South | South | Stony Island Ave | 23950 |
147 | 8216 South | South | Stony Island Ave | 30800 |
148 | 6840 South | South | Stony Island Ave | 26250 |
149 | 5640 South | South | Stony Island Ave | 6250 |
150 | 2936 East | East | 92nd St | 20650 |
151 | 3010 East | East | 92nd St | 14250 |
152 | 1354 West | West | 99th Street | 6400 |
153 | 1620 West | West | 99th Street | 5650 |
154 | 2701 East | East | 100th St | 5500 |
155 | 3250 East | East | 100th St | 6400 |
156 | 9621 South | South | Avenue L | 2500 |
157 | 10129 South | South | Avenue L | 2100 |
158 | 9604 South | South | Beverly Ave | 10150 |
159 | 9927 South | South | Longwood Dr | 2650 |
160 | 9150 South | South | Harbor Ave | 1250 |
161 | 8930 South | South | Mackinaw Ave | 6900 |
162 | 7206 South | South | Yates Blvd | 6250 |
163 | 2237 West | West | 63rd Street | 9000 |
164 | 1445 West | West | 63rd Street | 5400 |
165 | 519 West | West | 63rd St | 4000 |
166 | 120 East | East | 63rd St | 6200 |
167 | 642 East | East | 67th St | 6300 |
168 | 1440 East | East | 67th St | 4600 |
169 | 1733 East | East | 67th St | 5150 |
170 | 175 West | West | 75th Street | 8800 |
171 | 46 East | East | 75th St | 5850 |
172 | 504 East | East | 75th St | 8050 |
173 | 1744 East | East | 75th St | 6550 |
174 | 1908 West | West | 76th Street | 4000 |
175 | 718 West | West | 76th Street | 7700 |
176 | 320 East | East | 76th St | 4300 |
177 | 448 East | East | 76th St | 4650 |
178 | 1716 East | East | 76th St | 4300 |
179 | 2830 West | West | 79th Street | 16650 |
181 | 1344 West | West | 79th Street | 8650 |
182 | 1055 West | West | 79th Street | 8800 |
183 | 540 West | West | 79th Street | 9600 |
184 | 20 East | East | 79th St | 10350 |
185 | 65 East | East | 79th St | 8800 |
186 | 850 East | East | 79th St | 8150 |
187 | 2726 East | East | 79th St | 5700 |
188 | 1715 West | West | 83rd Street | 6050 |
189 | 1101 West | West | 83rdStreet | 7550 |
190 | 10 East | East | 83rd St | 9200 |
191 | 505 East | East | 83rd Street | 9000 |
192 | 1240 East | East | 83rd Street | 7800 |
193 | 1165 East | East | 83rd Street | 4500 |
194 | 2848 East | East | 83rd Street | 4150 |
195 | 3045 East | East | 83rd St | 3650 |
196 | 1720 West | West | 87th Street | 14750 |
197 | 1428 West | West | 87th Street | 15800 |
198 | 817 East | East | 87th Street | 10650 |
199 | 551 West | West | 87th Street | 14300 |
200 | 282 West | West | 87th Street | 7900 |
201 | 71 East | East | 87th Street | 12300 |
202 | 920 East | East | 87th Street | 9700 |
203 | 2040 East | East | 87th Street | 7050 |
204 | 3100 East | East | 87th Street | 4400 |
205 | 2108 West | West | 95th Street | 12750 |
206 | 1850 West | West | 95th Street | 15800 |
207 | 1222 West | West | 95th Street | 16450 |
208 | 948 West | West | 95th Street | 14550 |
209 | 305 West | West | 95th Street | 14950 |
210 | 202 West | West | 95th Street | 16950 |
211 | 206 East | East | 95th Street | 15200 |
212 | 1057 East | East | 95th Street | 11000 |
213 | 2097 East | East | 95th Street | 16050 |
214 | 3502 East | East | 95th Street | 8400 |
216 | 537 West | West | 103rd Street | 9350 |
217 | 112 West | West | 103rd Street | 9300 |
218 | 235 East | East | 103rd St | 10850 |
219 | 907 East | East | 103rd St | 8900 |
220 | 7141 South | South | Chicago Ave | 9550 |
221 | 2230 West | West | Garfield Blvd | 14400 |
222 | 1848 West | West | Garfield Blvd | 16600 |
223 | 226 East | East | Garfield Blvd | 15900 |
224 | 120 West | West | Garfield Blvd | 19350 |
225 | 1359 South | South | Loomis St | 2100 |
226 | 1905 South | South | Loomis St | 2650 |
227 | 5038 South | South | Loomis St | 1000 |
228 | 5710 South | South | Loomis St | 1750 |
229 | 6628 South | South | Loomis St | 2750 |
230 | 6732 South | South | Loomis St | 2950 |
231 | 7807 South | South | Loomis St | 3300 |
232 | 8210 South | South | Loomis St | 2750 |
233 | 1031 South | South | Racine Ave | 5350 |
234 | 1340 South | South | Racine Ave | 2700 |
235 | 3538 South | South | Racine Ave | 1300 |
236 | 4411 South | South | Racine Ave | 3350 |
237 | 5235 South | South | Racine Ave | 3850 |
238 | 6240 South | South | Racine Ave | 5500 |
239 | 6710 South | South | Racine Ave | 5650 |
240 | 7119 South | South | Racine Ave | 5550 |
241 | 7724 South | South | Racine Ave | 5350 |
242 | 8228 South | South | Racine Ave | 5900 |
243 | 2263 West | West | 18th Street | 3350 |
244 | 223 West | West | 18th Street | 4250 |
245 | 68 West | West | 18th St | 4050 |
246 | 118 West | West | 18th St | 1900 |
247 | 943 West | West | 31st St | 5000 |
248 | 1139 West | West | 31st St | 4100 |
249 | 315 West | West | 31st St | 8050 |
250 | 20 West | West | 31st St | 7200 |
252 | 217 East | East | 31st St | 7000 |
253 | 2307 West | West | 35th St | 5100 |
254 | 2017 West | West | 35th St | 7600 |
255 | 1301 West | West | 35th St | 8500 |
256 | 507 West | West | 35th St | 7950 |
257 | 256 East | East | 35th St | 5100 |
258 | 521 East | East | 35th St | 4800 |
259 | 1623 West | West | 43rd St | 3050 |
260 | 1430 West | West | 43rd St | 2400 |
261 | 506 West | West | 43rd St | 3400 |
263 | 450 East | East | 43rd St | 4450 |
264 | 1707 West | West | 47th St | 9050 |
265 | 1439 West | West | 47th St | 8000 |
266 | 20 West | West | 47th St | 7650 |
267 | 410 East | East | 47th St | 7350 |
268 | 1048 East | East | 47th St | 8600 |
269 | 1706 West | West | 51st Street | 4800 |
270 | 929 West | West | 51st Street | 4450 |
271 | 715 West | West | 51st St | 4250 |
272 | 40 West | West | 51st St | 4700 |
273 | 329 East | East | 51st St | 4400 |
274 | 718 East | East | 51st St | 4550 |
277 | 944 West | West | 55th Street | 16900 |
278 | 410 East | East | 55th St | 11400 |
279 | 1340 East | East | 55th St | 7850 |
280 | 2635 West | West | 59th Street | 6700 |
281 | 1715 West | West | 59th Street | 5850 |
282 | 1115 West | West | 59th St | 8150 |
283 | 609 West | West | 59th St | 7350 |
284 | 124 West | West | 59th Street | 4450 |
285 | 261 East | East | 59th St | 3250 |
286 | 2525 South | South | Blue Island Ave | 9050 |
287 | 2358 South | South | Blue Island Ave | 6700 |
288 | 1623 South | South | Blue Island Ave | 2600 |
289 | 2235 West | West | Cermak Rd | 6850 |
290 | 1730 West | West | Cermak Rd | 5750 |
291 | 1248 West | West | Cermak Rd | 8650 |
292 | 234 West | West | Cermak Rd | 8350 |
293 | 415 West | West | Cermak Rd | 6150 |
294 | 20 West | West | Cermak Rd | 9950 |
295 | 67 East | East | Cermak Rd | 7350 |
296 | 120 East | East | Cermak Rd | 7900 |
298 | 1015 East | East | Hyde Park Blvd | 4850 |
299 | 5434 South | South | Hyde Park Blvd | 3700 |
300 | 2509 West | West | Marquette Rd | 7450 |
301 | 2208 West | West | Marquette Rd | 7650 |
302 | 660 West | West | Marquette Rd | 9950 |
303 | 205 East | East | Marquette Rd | 8400 |
304 | 840 East | East | Marquette Rd | 7100 |
305 | 3610 South | South | Morgan St | 2650 |
306 | 6830 South | South | Morgan St | 2100 |
307 | 7230 South | South | Morgan St | 1800 |
308 | 1431 West | West | Pershing Rd | 9750 |
309 | 340 West | West | Pershing Rd | 7700 |
310 | 268 East | East | Pershing Rd | 3600 |
311 | 750 East | East | Pershing Rd | 4900 |
312 | 1640 West | West | Roosevelt Rd | 14100 |
313 | 813 West | West | Roosevelt Rd | 15800 |
314 | 412 West | West | Roosevelt Rd | 20650 |
315 | 52 East | East | Roosevelt RD | 16600 |
316 | 125 East | East | 24th St | 350 |
317 | 575 West | West | 26TH ST | 3450 |
318 | 140 East | East | 26th St | 3900 |
319 | 1533 East | East | 56th St | 6800 |
320 | 1621 East | East | 57th St | 19750 |
321 | 771 East | East | 60th St | 1450 |
322 | 1171 West | West | 74th St | 5050 |
323 | 3036 East | East | 83rd Pl | 650 |
324 | 3223 East | East | 85th St | 6150 |
325 | 77 East | East | Balbo Ave | 5250 |
326 | 271 East | East | Balbo Dr | 6200 |
327 | 530 East | East | Best Dr | 2800 |
328 | 1073 South | South | Columbus Dr | 18950 |
329 | 5065 South | South | Drexel Blvd | 3300 |
330 | 1650 East | East | Midway Plaisance | 6700 |
331 | 520 East | East | Morgan Dr | 14100 |
332 | 650 East | East | Rainey Dr | 8150 |
333 | 3319 West | West | Harrison St | 1150 |
334 | 2380 West | West | Harrison St | 2650 |
335 | 1973 West | West | Harrison St | 3950 |
336 | 1739 West | West | Harrison St | 5300 |
337 | 1519 West | West | Harrison St | 4400 |
338 | 1015 West | West | Harrison St | 7500 |
339 | 15 East | East | Harrison ST | 2950 |
340 | 754 West | West | Harrison St | 5500 |
341 | 1219 South | South | Jefferson St | 2400 |
342 | 651 South | South | Jefferson St | 3200 |
343 | 1300 East | East | Midway Plaisance | 8350 |
344 | 830 East | East | Oakwood Blvd | 2450 |
345 | 188 West | West | Polk St | 4450 |
347 | 9943 South | South | Beverly Ave | 5950 |
348 | 8349 South | South | Bond Ave | 5550 |
349 | 8527 South | South | Burley Ave | 9050 |
350 | 2010 South | South | Calumet Ave | 1200 |
351 | 460 South | South | Canal St | 7800 |
352 | 538 South | South | Clinton St | 3650 |
354 | 9592 South | South | Colfax Ave | 6550 |
355 | 1161 South | South | Columbus Dr | 18900 |
356 | 6100 South | South | Cornell Dr | 21500 |
357 | 637 South | South | Dearborn St | 3900 |
358 | 682 South | South | Des Plaines St | 3150 |
360 | 11043 South | South | Longwood Dr | 3350 |
361 | 7409 South | South | Parnell Ave | 600 |
362 | 5510 South | South | Payne Dr | 8600 |
363 | 3027 South | South | Pitney Ct | 900 |
364 | 6400 South | South | Richards Dr | 4100 |
365 | 7020 South | South | St Lawrence Ave | 2500 |
366 | 8620 South | South | Summit Ave | 3100 |
367 | 9915 South | South | Van Vlissingen Rd | 3400 |
368 | 634 South | South | Wabash Ave | 4550 |
369 | 1130 South | South | Wabash Ave | 5750 |
370 | 1040 South | South | Wells St | 2100 |
371 | 5121 South | South | Woodlawn Ave | 4050 |
372 | 1760 West | West | Ogden Ave | 10050 |
373 | 2124 West | West | Ogden Ave | 11350 |
374 | 2653 West | West | Ogden Ave | 11950 |
375 | 2701 West | West | Pope John Paul II | 3500 |
376 | 742 West | West | Root St | 1600 |
377 | 5224 South | South | Woodlawn Ave | 3600 |
378 | 4929 South | South | Woodlawn Ave | 2750 |
379 | 4624 South | South | Woodlawn Ave | 1500 |
380 | 1550 South | South | Lake Shore Dr | 82600 |
381 | 5250 South | South | Lake Shore Dr | 55800 |
382 | 10344 South | South | Torrence Ave | 10800 |
383 | 10250 South | South | Ewing Ave | 3400 |
384 | 10535 South | South | Wentworth Ave | 4150 |
385 | 10452 South | South | Kedzie Ave | 11000 |
386 | 11335 South | South | Michigan Ave | 5950 |
387 | 11201 South | South | Cottage Grove Ave | 3350 |
388 | 11750 South | South | State St | 3900 |
389 | 11600 South | South | Halsted St | 15150 |
390 | 11867 South | South | Vincennes Ave | 3500 |
391 | 12423 South | South | Michigan Ave | 4450 |
392 | 12007 South | South | State St | 3150 |
393 | 12054 South | South | Wentworth Ave | 1550 |
394 | 13027 South | South | Baltimore Ave | 2200 |
395 | 12940 South | South | Torrence Ave | 9300 |
396 | 13200 South | South | Torrence Ave | 7550 |
397 | 6559 South | South | Damen Ave | 10750 |
398 | 1600 West | West | Ogden Ave | 9950 |
399 | 133 South | South | Ashland Ave | 15850 |
400 | 120 South | South | Des Plaines St | 4400 |
401 | 852 North | North | Ashland Ave | 17200 |
402 | 2535 West | West | Pershing Rd | 6150 |
403 | 4923 West | West | Grand Ave | 6250 |
404 | 2125 North | North | Cicero Ave | 19950 |
405 | 1463 West | West | Montrose Ave | 8350 |
406 | 1440 West | West | 55th St | 17600 |
407 | 1423 West | West | Lake St | 4850 |
408 | 1425 West | West | Diversey Ave | 10850 |
409 | 1125 North | North | Cicero Ave | 18900 |
410 | 1117 North | North | Laramie Ave | 9750 |
411 | 1055 North | North | Central Ave | 11350 |
412 | 5862 West | West | Jackson Blvd | 4900 |
413 | 5700 West | West | Washington St | 5400 |
414 | 5838 West | West | Lake St | 3550 |
416 | 5854 West | West | Division St | 6100 |
417 | 5741 West | West | Grand Ave | 10850 |
418 | 5900 West | West | Diversey Ave | 10900 |
419 | 5850 West | West | Montrose Ave | 11350 |
420 | 3541 East | East | 106th St | 8250 |
421 | 13101 South | South | Brainard Ave | 8100 |
422 | 3220 East | East | 134th St | 2350 |
423 | 2851 North | North | Austin Ave | 10650 |
424 | 618 West | West | Addison St | 5800 |
425 | 1050 West | West | Hollywood Ave | 17600 |
426 | 5333 North | North | Sheridan Ave | 6250 |
428 | 2900 West | West | 26th St | 6850 |
429 | 2531 West | West | 51st St | 10100 |
430 | 2738 West | West | 47th St | 11850 |
431 | 2703 West | West | Cermak Rd | 7100 |
432 | 2700 West | West | Roosevelt Rd | 9150 |
433 | 2439 West | West | 43rd St | 2100 |
434 | 7430 West | West | Talcott Ave | 6150 |
435 | 3654 West | West | 16th St | 4750 |
436 | 5301 West | West | Irving Park Rd | 17250 |
437 | 5400 West | West | Fullerton Ave | 18950 |
438 | 3543 West | West | North Ave | 19750 |
439 | 3656 West | West | Washington St | 5900 |
440 | 3433 West | West | Madison St | 7800 |
441 | 3534 West | West | Wrightwood Ave | 5300 |
442 | 4856 West | West | Foster Ave | 13800 |
443 | 4637 West | West | Roosevelt Rd | 11300 |
445 | 4444 West | West | Chicago Ave | 10700 |
446 | 4517 West | West | North Ave | 17450 |
447 | 1303 West | West | Wilson Ave | 6350 |
448 | 1450 West | West | Foster Ave | 12050 |
449 | 1418 West | West | Bryn Mawr Ave | 3250 |
450 | 54 West | West | Chicago Ave | 11500 |
451 | 51 West | West | Ontario St | 9200 |
452 | 1420 West | West | Pratt Blvd | 3550 |
453 | 105 West | West | Congress Pkwy | 38350 |
454 | 711 East | East | 111th St | 8250 |
455 | 1650 West | West | North Ave | 10450 |
457 | 1649 West | West | Foster Ave | 12800 |
458 | 1828 West | West | Chicago Ave | 8700 |
459 | 25 West | West | Van Buren St | 3700 |
460 | 19 West | West | Jackson Blvd | 5050 |
461 | 15 West | West | Adams St | 5600 |
462 | 30 East | East | Monroe St | 6500 |
463 | 15 West | West | Madison St | 5750 |
464 | 10 West | West | Lake St | 6850 |
465 | 27 West | West | Washington St | 7150 |
466 | 24 West | West | Randolph St | 9000 |
467 | 6526 North | North | California Ave | 5700 |
468 | 3455 East | East | 112th St | 3850 |
469 | 3980 West | West | 111th St | 10100 |
470 | 738 West | West | 107th St | 5450 |
471 | 3900 West | West | 79th St | 16000 |
472 | 3908 West | West | Marquette St | 9000 |
474 | 3933 West | West | 63rd St | 12000 |
475 | 5858 South | South | Archer Ave | 14350 |
476 | 4630 West | West | 55th St | 11650 |
477 | 3535 West | West | 47th St | 11800 |
478 | 4706 West | West | 47th St | 15150 |
479 | 2719 West | West | 35th St | 5800 |
480 | 3142 West | West | 16th St | 1450 |
481 | 4733 West | West | Lake St | 8050 |
482 | 4307 West | West | Grand Ave | 5950 |
483 | 500 West | West | Fullerton Ave | 9250 |
484 | 2293 North | North | Clybourn Ave | 8200 |
485 | 8318 West | West | Addison St | 5550 |
486 | 3845 West | West | Lawrence Ave | 11900 |
487 | 8950 West | West | Lawrence Ave | 12300 |
488 | 3816 West | West | Bryn Mawr Ave | 7250 |
489 | 3318 West | West | Peterson Ave | 19150 |
490 | 2314 West | West | Peterson Ave | 22000 |
491 | 2307 West | West | Devon Ave | 11100 |
492 | 7114 West | West | Devon Ave | 11300 |
494 | 3947 West | West | Jackson Blvd | 6650 |
495 | 2345 West | West | Jackson Blvd | 2450 |
496 | 1645 West | West | Jackson Blvd | 2750 |
497 | 1540 West | West | Jackson Blvd | 3300 |
498 | 350 East | East | Jackson Dr | 8800 |
499 | 1880 West | West | Adams St | 1750 |
500 | 2344 West | West | Adams St | 1700 |
501 | 3932 West | West | Madison St | 9650 |
502 | 3542 West | West | Lake St | 4700 |
503 | 3116 West | West | Lake St | 2850 |
504 | 10 East | East | Washington St | 6350 |
505 | 2324 West | West | Warren Blvd | 3250 |
506 | 2335 West | West | Madison St | 6600 |
507 | 1931 West | West | Lake St | 3450 |
508 | 3165 West | West | Franklin Blvd | 1950 |
509 | 1926 West | West | Grand Ave | 9800 |
511 | 777 West | West | Chicago Ave | 13800 |
512 | 1521 West | West | Chicago Ave | 8550 |
513 | 3914 West | West | Division St | 8450 |
514 | 3500 West | West | Grand Ave | 7850 |
515 | 3045 West | West | Division St | 8300 |
516 | 1925 West | West | Division St | 13400 |
517 | 1504 West | West | Augusta Blvd | 6400 |
518 | 161 East | East | Chicago Ave | 9050 |
519 | 303 East | East | Chicago Ave | 5950 |
520 | 206 West | West | Van Buren St | 5250 |
521 | 2415 North | North | Pulaski Rd | 12500 |
522 | 6445 West | West | Grand Ave | 7400 |
523 | 5025 West | West | Armitage Ave | 4850 |
524 | 2366 North | North | Central Ave | 10000 |
525 | 740 West | West | Addison St | 6450 |
526 | 662 West | West | Belmont Ave | 10400 |
527 | 624 West | West | Division St | 11050 |
528 | 250 West | West | 127th St | 12850 |
529 | 446 West | West | 119th St | 5750 |
530 | 3900 West | West | 31st St | 10050 |
531 | 6780 West | West | Higgins Ave | 8750 |
532 | 537 South | South | Dearborn St | 5750 |
533 | 513 South | South | Damen Ave | 16800 |
534 | 3515 West | West | Washington St | 5250 |
535 | 3252 West | West | 31st St | 10300 |
536 | 4247 North | North | Western Ave | 20350 |
537 | 230 South | South | La Salle St | 3850 |
538 | 210 South | South | Des Plaines St | 3150 |
539 | 210 South | South | Clinton St | 5800 |
540 | 225 South | South | Canal St | 6050 |
541 | 209 South | South | Wells St | 5800 |
542 | 210 South | South | Clark St | 8250 |
543 | 239 South | South | Dearborn St | 8950 |
544 | 400 South | South | Kostner Ave | 9350 |
545 | 210 South | South | Kedzie Ave | 7750 |
546 | 603 West | West | Monroe St | 6900 |
547 | 2939 West | West | 63rd St | 11100 |
548 | 3100 West | West | 59th St | 10650 |
549 | 3105 West | West | Garfield Blvd | 12400 |
550 | 2857 West | West | Pershing Rd | 3900 |
551 | 2825 West | West | 31st St | 8850 |
552 | 3260 West | West | Warren Blvd | 2950 |
553 | 3233 West | West | Washington St | 4100 |
554 | 3283 West | West | Wrightwood Ave | 5000 |
555 | 3238 West | West | Fullerton Ave | 16600 |
556 | 2501 West | West | 103rd St | 11800 |
557 | 650 West | West | Washington St | 9500 |
558 | 3313 West | West | Lawrence Ave | 10500 |
559 | 4631 West | West | Harrison St | 5750 |
560 | 4224 West | West | 31st St | 10250 |
561 | 4040 West | West | Ogden St | 10250 |
562 | 4047 West | West | Fullerton Ave | 18950 |
563 | 4301 West | West | Diversey Ave | 9350 |
564 | 5105 West | West | Addison St | 11100 |
565 | 5103 West | West | North Ave | 18250 |
566 | 155 West | West | Grand Ave | 7100 |
567 | 4521 North | North | Central Ave | 13800 |
568 | 4581 North | North | Western Ave | 19150 |
569 | 6330 West | West | Touhy Ave | 16850 |
570 | 5831 North | North | California Ave | 5700 |
571 | 3815 West | West | Devon Ave | 13550 |
573 | 2208 West | West | 111th St | 11300 |
574 | 206 South | South | Cicero Ave | 16850 |
575 | 135 South | South | Pulaski Rd | 12100 |
576 | 49 South | South | Jefferson St | 4550 |
577 | 909 West | West | Foster Ave | 10100 |
578 | 158 East | East | 107th St | 4000 |
579 | 350 East | East | 111th St | 6100 |
580 | 3743 West | West | Belmont Ave | 13100 |
581 | 5665 West | West | Bryn Mawr Ave | 4450 |
582 | 11810 South | South | Western Ave | 11800 |
583 | 11027 South | South | Pulaski Rd | 16450 |
584 | 11450 South | South | Kedzie Ave | 9800 |
585 | 9450 South | South | Jeffery Ave | 9700 |
586 | 9401 South | South | Cottage Grove Ave | 12200 |
588 | 8210 South | South | Exchange Ave | 4850 |
589 | 8220 South | South | Kedzie Ave | 10650 |
591 | 7825 South | South | Pulaski Rd | 23300 |
593 | 7845 South | South | Cottage Grove Ave | 13650 |
594 | 7829 South | South | Damen Ave | 11850 |
595 | 6750 South | South | Kedzie Ave | 13000 |
596 | 6210 South | South | Cicero Ave | 29950 |
597 | 6224 South | South | Pulaski Rd | 26150 |
598 | 6214 South | South | Kedzie Ave | 12100 |
599 | 6217 South | South | Ashland Ave | 18000 |
600 | 5433 South | South | Central Ave | 13700 |
601 | 5410 South | South | Cicero Ave | 35600 |
602 | 5413 South | South | Kedzie Ave | 12150 |
603 | 5443 South | South | California Ave | 9300 |
604 | 5411 South | South | Damen Ave | 7000 |
605 | 4647 South | South | Archer Ave | 16650 |
606 | 4611 South | South | Kedzie Ave | 14600 |
607 | 4637 South | South | California Ave | 10400 |
608 | 3835 South | South | Damen Ave | 12900 |
609 | 3030 South | South | Kostner Ave | 4800 |
610 | 3001 South | South | Kedzie Ave | 12700 |
611 | 3026 South | South | California Ave | 11700 |
612 | 2501 South | South | Hamlin Ave | 1600 |
613 | 2130 South | South | Marshall Blvd | 9400 |
614 | 2149 South | South | California Ave | 8850 |
615 | 2157 South | South | Damen Ave | 12350 |
616 | 1531 South | South | Kostner Ave | 9750 |
617 | 1539 South | South | Pulaski Rd | 10850 |
618 | 1142 South | South | Sacramento Ave | 10000 |
619 | 1820 North | North | Kimball Ave | 5250 |
620 | 211 South | South | Central Ave | 12700 |
621 | 190 South | South | Laramie Ave | 10550 |
622 | 857 West | West | Austin Ave | 12400 |
623 | 1629 North | North | Ashland Ave | 15350 |
624 | 2123 North | North | Damen Ave | 11050 |
625 | 2032 North | North | Milwaukee Ave | 7300 |
626 | 1640 North | North | Pulaski Rd | 9650 |
628 | 1646 North | North | Laramie Ave | 6600 |
629 | 1666 North | North | Narragansett Ave | 6500 |
630 | 2393 North | North | Harlem Ave | 11150 |
631 | 2427 North | North | Kedzie Ave | 8700 |
632 | 2420 North | North | Sacramento Ave | 8250 |
633 | 2435 North | North | Ashland Ave | 20100 |
634 | 2900 North | North | Lake Shore Inner Dr | 2350 |
635 | 2825 North | North | Halsted St | 9750 |
636 | 2824 North | North | Sheffield Ave | 5350 |
638 | 2851 North | North | Southport Ave | 4300 |
639 | 2855 North | North | Ashland Ave | 18700 |
640 | 3125 North | North | Kimball Ave | 10000 |
641 | 2609 North | North | Kimball Ave | 8050 |
642 | 2859 North | North | Central Park Ave | 4500 |
643 | 2827 North | North | Pulaski Rd | 11950 |
644 | 2830 North | North | Kostner Ave | 3800 |
645 | 2845 North | North | Cicero Ave | 22000 |
646 | 2836 North | North | Laramie Ave | 7750 |
647 | 3280 North | North | Cumberland Ave | 18850 |
648 | 3649 North | North | Cumberland Ave | 19700 |
649 | 3250 North | North | Harlem Ave | 14450 |
650 | 7825 West | West | Forest Preserve Ave | 8000 |
651 | 3647 North | North | Oak Park Ave | 9400 |
652 | 3658 North | North | Central Ave | 11900 |
653 | 3620 North | North | Laramie Ave | 8350 |
654 | 3255 North | North | Cicero Ave | 20300 |
655 | 3647 North | North | Cicero Ave | 19250 |
656 | 3628 North | North | Milwaukee Ave | 7200 |
657 | 3235 North | North | Kedzie Ave | 7500 |
658 | 3249 North | North | Elston Ave | 7400 |
659 | 3242 North | North | California Ave | 5950 |
660 | 3260 North | North | Western Ave (over pass) | 16050 |
661 | 3220 North | North | Damen Ave | 8500 |
662 | 3228 North | North | Sheffield Ave | 4750 |
663 | 3232 North | North | Halsted St | 11050 |
664 | 3620 North | North | Lake Shore Inner Dr | 9450 |
665 | 3636 North | North | Broadway | 5050 |
666 | 3654 North | North | Halsted St | 8050 |
667 | 3733 North | North | Clark St | 6300 |
668 | 3625 North | North | Ashland Ave | 16050 |
669 | 4065 North | North | Narragansett Ave | 13400 |
670 | 4055 North | North | Cicero Ave | 15750 |
671 | 4059 North | North | Pulaski Rd | 10550 |
672 | 4050 North | North | Elston Ave | 10100 |
673 | 4453 North | North | Damen Ave | 6500 |
674 | 4034 North | North | Ashland Ave | 16700 |
675 | 4472 North | North | Clarendon St | 2350 |
676 | 4421 North | North | Sheridan Rd | 3750 |
677 | 4445 North | North | Pulaski Rd | 13650 |
678 | 4810 North | North | Milwaukee Ave | 13800 |
679 | 4853 North | North | Nagle Ave | 11350 |
680 | 5659 North | North | Northwest Hwy | 4950 |
682 | 5217 North | North | Elston Ave | 9100 |
683 | 5237 North | North | Kedzie Ave | 7350 |
684 | 5232 North | North | Western Ave | 17300 |
685 | 5243 North | North | Broadway | 12500 |
686 | 5725 North | North | Broadway | 12950 |
687 | 6071 North | North | Western Ave | 17300 |
688 | 7254 North | North | Rogers Ave | 3800 |
689 | 7477 North | North | Clark St | 9950 |
690 | 6082 North | North | Lincoln Ave | 17800 |
691 | 6067 North | North | Kimball Ave | 7800 |
693 | 6445 North | North | Central Ave | 8750 |
694 | 6516 North | North | Harlem Ave | 15900 |
695 | 324 South | South | Racine Ave | 6250 |
696 | 220 South | South | Wabash Ave | 5450 |
697 | 200 South | South | Michigan Ave | 19500 |
698 | 249 South | South | Columbus Dr | 15050 |
699 | 114 North | North | Hamlin Ave | 7750 |
700 | 323 North | North | Pulaski Rd | 12400 |
701 | 267 North | North | Central Park Ave | 4400 |
702 | 243 North | North | Homan Ave | 6300 |
703 | 222 North | North | Kedzie Ave | 7250 |
704 | 220 North | North | Western Ave | 17200 |
705 | 209 North | North | Damen Ave | 10150 |
706 | 210 North | North | Halsted St | 10150 |
708 | 549 North | North | Milwaukee Ave | 5550 |
709 | 640 North | North | Wabash Ave | 3700 |
710 | 840 North | North | Halsted St | 11550 |
711 | 1240 North | North | Homan Ave | 4450 |
712 | 1231 North | North | Western Ave | 19050 |
714 | 1230 North | North | Clybourn Ave | 7500 |
715 | 835 North | North | Clark St | 8250 |
716 | 1667 North | North | Wells St | 5350 |
717 | 1665 North | North | Sedgwick St | 2850 |
718 | 11021 South | South | Ashland Ave | 1000 |
719 | 5205 North | North | Nagle Ave | 9150 |
720 | 6221 West | West | Gunnison St | 6150 |
721 | 6135 West | West | Grand Ave | 11400 |
722 | 6325 West | West | Fullerton Ave | 15150 |
723 | 6257 West | West | Belmont Ave | 12200 |
724 | 6050 West | West | Addison St | 12100 |
725 | 6204 West | West | Irving Park Rd | 15500 |
726 | 6656 West | West | Diversey Ave | 11950 |
727 | 1928 North | North | Oak Park Ave | 6500 |
728 | 7168 West | West | North Ave | 18000 |
729 | 6570 West | West | North Ave | 20850 |
730 | 1300 West | West | Washington St | 2950 |
731 | 1234 West | West | Randolph St | 3000 |
733 | 645 North | North | State St | 11550 |
734 | 640 North | North | La Salle St | 19500 |
735 | 635 North | North | Dearborn St | 8200 |
736 | 641 North | North | Clark St | 10600 |
737 | 633 North | North | Wells St | 4700 |
738 | 6805 North | North | Northwest Hwy | 8050 |
740 | 4306 West | West | 26th St | 4200 |
741 | 4212 West | West | Armitage Ave | 8850 |
742 | 180 North | North | La Salle St | 11400 |
743 | 180 North | North | Wabash Ave | 4100 |
744 | 163 North | North | Dearborn St | 7050 |
745 | 175 North | North | Clark St | 7250 |
746 | 176 North | North | Wells St | 5300 |
747 | 162 North | North | Franklin St | 8400 |
748 | 156 North | North | Jefferson St | 4150 |
749 | 186 North | North | Des Plaines St | 3650 |
750 | 3506 East | East | 95Th St | 7250 |
751 | 11233 South | South | Avenue O | 8000 |
752 | 10347 South | South | Cottage Grove Ave | 6850 |
753 | 9761 South | South | Cottage Grove Ave | 7000 |
755 | 9233 South | South | Commercial Ave | 7250 |
757 | 7150 South | South | Cottage Grove Ave | 10700 |
758 | 6336 South | South | Harlem Ave | 29050 |
759 | 6335 South | South | Central Ave | 7850 |
760 | 6312 South | South | California Ave | 8300 |
762 | 3121 South | South | Pulaski Rd | 14750 |
763 | 2235 South | South | Damen Ave | 12000 |
764 | 1659 South | South | Homan Ave | 2550 |
765 | 323 South | South | Central Ave | 13300 |
766 | 1548 North | North | Laramie Ave | 9200 |
768 | 2300 North | North | Racine Ave | 6500 |
769 | 2318 North | North | Sacramento Ave | 9200 |
770 | 2761 North | North | Narragansett Ave | 11850 |
771 | 2739 North | North | Pulaski Rd | 13250 |
772 | 2708 North | North | Halsted St | 7250 |
773 | 3152 North | North | Milwaukee Ave | 8400 |
774 | 3531 North | North | Broadway | 7350 |
775 | 4710 North | North | Kedzie Ave | 7750 |
776 | 4762 North | North | East River Rd | 7000 |
777 | 5653 North | North | East River Rd | 12650 |
778 | 5800 North | North | Cicero Ave | 11350 |
779 | 5543 North | North | Lincoln Ave | 12200 |
780 | 6719 North | North | Ashland Ave | 2400 |
781 | 7127 North | North | Leigh Ave | 4300 |
782 | 6333 North | North | Milwaukee Ave | 13400 |
784 | 3150 South | South | State St | 10900 |
786 | 715 South | South | Kedzie Ave | 8150 |
787 | 750 North | North | Central Park Ave | 5150 |
788 | 700 South | South | Pulaski Rd | 11850 |
789 | 338 South | South | Homan Ave | 7500 |
790 | 194 North | North | Damen Ave | 9400 |
791 | 465 North | North | Desplaines St | 2250 |
792 | 667 North | North | Sacramento Ave | 10700 |
793 | 1526 North | North | Western Ave | 19700 |
794 | 1136 North | North | Milwaukee Ave | 7050 |
795 | 745 North | North | Fairbanks Ct | 5350 |
796 | 1111 North | North | Clark St | 7050 |
798 | 4732 South | South | Pulaski Rd | 22850 |
799 | 3110 South | South | California Ave | 15400 |
801 | 890 West | West | Lawrence Ave | 7250 |
802 | 11159 South | South | Longwood Dr | 2700 |
803 | 1527 West | West | Irving Park Rd | 14900 |
804 | 22 West | West | Congress Pkwy | 31350 |
805 | 20 West | West | Division St | 9350 |
806 | 1 West | West | Grand Ave | 9400 |
807 | 51 East | East | 119th St | 3450 |
808 | 22 East | East | Division St | 4200 |
809 | 2250 East | East | 130th St | 11500 |
810 | 408 South | South | Clark St | 6500 |
811 | 322 South | South | California Ave | 6550 |
812 | 1345 West | West | 107th St | 3950 |
813 | 1920 West | West | 115th St | 3150 |
814 | 2600 East | East | 122nd St | 2100 |
815 | 2350 West | West | 119th St | 9950 |
816 | 3254 West | West | 115th St | 7750 |
817 | 6431 West | West | 63rd St | 9100 |
818 | 4019 West | West | 59th St | 10100 |
819 | 2641 West | West | Pershing Rd | 5500 |
820 | 4418 West | West | 26th St | 7400 |
821 | 4042 West | West | Cermak Rd | 11600 |
822 | 2605 West | West | Armitage Ave | 8400 |
824 | 1625 West | West | Irving Park Rd | 16500 |
825 | 2432 West | West | Irving Park Rd | 21050 |
826 | 4825 West | West | Lawrence Ave | 14450 |
827 | 9463 West | West | Higgins Rd | 16050 |
829 | 3447 West | West | Foster Ave | 13750 |
830 | 6080 North | North | Caldwell Ave | 13550 |
831 | 45 West | West | 31st St | 7050 |
832 | 4035 West | West | Madison St | 10600 |
833 | 2845 West | West | Division St | 9100 |
834 | 2458 West | West | Augusta Blvd | 5700 |
836 | 10 East | East | Grand Ave | 10050 |
837 | 112 North | North | California Ave | 2550 |
838 | 25 North | North | Cicero Ave | 18500 |
839 | 173 West | West | Ohio St | 18850 |
840 | 40 West | West | 115th St | 5850 |
841 | 2430 West | West | Ogden Ave | 14950 |
842 | 2458 West | West | Addison St | 13500 |
843 | 2324 West | West | Armitage Ave | 8400 |
844 | 2830 West | West | 87th St | 14700 |
845 | 2950 West | West | 83rd St | 6100 |
846 | 2249 West | West | Montrose Ave | 8200 |
847 | 1420 West | West | Madison St | 6200 |
848 | 5434 West | West | Addison Ave | 11450 |
849 | 7121 West | West | Addison Ave | 10350 |
850 | 3521 North | North | Austin Ave | 10850 |
851 | 2653 North | North | Austin Ave | 11100 |
852 | 4308 North | North | Austin Ave | 9750 |
853 | 1728 North | North | Austin Ave | 10150 |
854 | 5532 West | West | Belmont Ave | 11550 |
855 | 7368 West | West | Belmont Ave | 12050 |
856 | 6845 West | West | Belmont Ave | 12100 |
857 | 10 South | South | Canal St | 6050 |
858 | 5947 North | North | Canfield Ave | 8350 |
859 | 3501 North | North | Central Ave | 13600 |
860 | 5601 North | North | Central Ave | 9400 |
861 | 2459 North | North | Central Ave | 12500 |
862 | 4256 North | North | Central Ave | 12450 |
863 | 1710 North | North | Central Ave | 10200 |
864 | 5050 North | North | Cicero Ave | 12950 |
865 | 3450 North | North | Cumberland Ave | 16500 |
866 | 5320 North | North | Cumberland Ave | 20300 |
867 | 5850 North | North | Cumberland Ave | 24700 |
868 | 4151 North | North | Cumberland Ave | 21950 |
869 | 7729 West | West | Devon Ave | 9650 |
870 | 6193 West | West | Devon Ave | 16650 |
871 | 6891 West | West | Diversey Ave | 8300 |
872 | 6041 West | West | Diversey Ave | 10800 |
873 | 5980 North | North | East River Rd | 9650 |
874 | 5140 North | North | East River Rd | 11250 |
875 | 5110 North | North | Elston Ave | 7950 |
876 | 8500 West | West | Forest Preserve Ave | 5200 |
877 | 6916 West | West | Forest Preserve Ave | 11950 |
878 | 6747 West | West | Foster Ave | 7150 |
879 | 6058 West | West | Foster Ave | 8650 |
880 | 5313 West | West | Foster Ave | 12300 |
881 | 5835 West | West | Fullerton Ave | 18550 |
882 | 7102 West | West | Grand Ave | 9600 |
884 | 2920 North | North | Harlem Ave | 11600 |
885 | 3731 North | North | Harlem Ave | 16050 |
886 | 1837 North | North | Harlem Ave | 13000 |
887 | 5898 North | North | Harlem Ave | 16350 |
888 | 7317 North | North | Harlem Ave | 13050 |
889 | 5731 West | West | Higgins Ave | 5100 |
891 | 7455 West | West | Higgins Ave | 7050 |
892 | 5842 West | West | Irving Park Rd | 17650 |
893 | 6911 West | West | Irving Park Rd | 14300 |
894 | 3400 North | North | Laramie Ave | 7950 |
896 | 2426 North | North | Laramie Ave | 7950 |
897 | 1748 North | North | Laramie Ave | 6750 |
898 | 5439 West | West | Lawrence Ave | 10400 |
900 | 5913 North | North | Lincoln Ave | 15800 |
901 | 6534 West | West | Montrose Ave | 12900 |
903 | 3725 North | North | Narragansett Ave | 12100 |
904 | 2890 North | North | Narragansett Ave | 12450 |
905 | 2228 North | North | Narragansett Ave | 8100 |
906 | 4459 North | North | Narragansett Ave | 10350 |
907 | 3130 North | North | Oak Park Ave | 8550 |
908 | 4850 West | West | Peterson Ave | 21400 |
910 | 7252 West | West | Touhy Ave | 12600 |
911 | 71 South | South | Wacker Dr | 10600 |
912 | 5749 North | North | Western Ave | 17050 |
913 | 3023 West | West | Addison Ave | 14900 |
914 | 4550 West | West | Addison Ave | 11800 |
915 | 3636 West | West | Armitage Ave | 9000 |
916 | 3308 West | West | Armitage Ave | 9100 |
917 | 4459 West | West | Armitage Ave | 8600 |
918 | 3317 West | West | Belmont Ave | 16350 |
919 | 3524 West | West | Belmont Ave | 13750 |
920 | 4621 West | West | Belmont Ave | 12650 |
921 | 2737 West | West | Belmont Ave | 11900 |
922 | 3945 West | West | Belmont Ave | 8300 |
923 | 5417 North | North | California Ave | 6400 |
924 | 3765 North | North | California Ave | 6750 |
925 | 2027 North | North | California Ave | 8050 |
926 | 7420 North | North | California Ave | 5200 |
927 | 1751 North | North | Central Park Ave | 5150 |
928 | 3120 West | West | Diversey Ave | 9250 |
929 | 3809 West | West | Diversey Ave | 8850 |
930 | 4632 West | West | Diversey Ave | 11500 |
931 | 2671 West | West | Foster Ave | 11850 |
932 | 3724 West | West | Fullerton Ave | 17200 |
933 | 4710 West | West | Fullerton Ave | 18700 |
934 | 3130 West | West | Fullerton Ave | 15200 |
935 | 4240 West | West | Irving Park Rd | 18550 |
936 | 3056 West | West | Irving Park Rd | 23650 |
937 | 3842 West | West | Irving Park Rd | 23250 |
938 | 4875 North | North | Kedzie Ave | 7150 |
939 | 5437 North | North | Kimball Ave | 6950 |
940 | 3630 North | North | Kimball Ave | 9800 |
941 | 2231 North | North | Kimball Ave | 6100 |
942 | 2230 North | North | Kostner Ave | 6250 |
943 | 2925 West | West | Lawrence Ave | 11700 |
944 | 4245 West | West | Lawrence Ave | 11300 |
945 | 2761 North | North | Milwaukee Ave | 9050 |
946 | 3758 West | West | Montrose Ave | 11000 |
947 | 2932 West | West | North Ave | 16950 |
948 | 3741 West | West | North Ave | 18650 |
949 | 3335 West | West | North Ave | 19300 |
950 | 2032 North | North | Pulaski Rd | 10650 |
951 | 3723 North | North | Pulaski Rd | 11350 |
952 | 3915 West | West | Roosevelt Rd | 11950 |
953 | 1256 West | West | Addison Ave | 9900 |
954 | 901 West | West | Addison Ave | 8200 |
955 | 2257 West | West | Addison Ave | 10900 |
956 | 1851 West | West | Armitage Ave | 10500 |
957 | 612 West | West | Armitage Ave | 6900 |
958 | 935 West | West | Armitage Ave | 6550 |
959 | 3524 North | North | Ashland Ave | 16900 |
960 | 5116 North | North | Ashland Ave | 13350 |
961 | 1525 West | West | Belmont Ave | 9600 |
962 | 1111 West | West | Belmont Ave | 10450 |
963 | 2237 West | West | Belmont Ave | 9350 |
964 | 3120 North | North | Broadway | 5850 |
966 | 4034 North | North | Broadway | 6500 |
967 | 5051 North | North | Broadway | 12500 |
968 | 1103 West | West | Bryn Mawr Ave | 8900 |
969 | 6137 North | North | Clark St | 16050 |
970 | 2620 North | North | Clybourn Ave | 8650 |
971 | 3137 North | North | Damen Ave | 9600 |
972 | 4113 North | North | Damen Ave | 6250 |
973 | 4855 North | North | Damen Ave | 6050 |
974 | 1804 North | North | Damen Ave | 8350 |
975 | 1614 West | West | Diversey Ave | 11200 |
976 | 1059 West | West | Foster Ave | 12100 |
978 | 1434 West | West | Fullerton Ave | 12200 |
979 | 2034 North | North | Halsted St | 9350 |
980 | 1140 West | West | Irving Park Rd | 13100 |
981 | 2032 West | West | Irving Park Rd | 20600 |
982 | 2665 North | North | Lakeview Ave | 3400 |
983 | 1350 West | West | Lawrence Ave | 10350 |
984 | 1058 West | West | Lawrence Ave | 7900 |
985 | 2315 West | West | Lawrence Ave | 13350 |
986 | 2136 North | North | Lincoln Ave | 7200 |
987 | 4322 North | North | Lincoln Ave | 7050 |
988 | 4900 North | North | Marine Dr | 3250 |
989 | 1640 North | North | Milwaukee Ave | 6400 |
990 | 1758 West | West | Montrose Ave | 8400 |
991 | 929 West | West | North Ave | 14000 |
992 | 3324 North | North | Racine Ave | 4450 |
993 | 2519 North | North | Racine Ave | 5650 |
994 | 5816 North | North | Ridge Ave | 21550 |
995 | 6629 North | North | Sheridan Rd | 20600 |
996 | 4926 North | North | Sheridan Rd | 4400 |
997 | 2228 North | North | Southport Ave | 4350 |
998 | 3643 North | North | Western Ave | 22650 |
999 | 2160 North | North | Western Ave | 19600 |
1000 | 5017 North | North | Western Ave | 16550 |
1001 | 1768 North | North | Western Ave | 20000 |
1002 | 901 South | South | Ashland Ave | 21250 |
1003 | 5937 West | West | Augusta Blvd | 4300 |
1004 | 1031 South | South | Austin Ave | 13050 |
1005 | 148 North | North | Austin Ave | 15750 |
1006 | 643 North | North | Central Ave | 12400 |
1007 | 725 South | South | Central Park Ave | 5350 |
1008 | 815 South | South | Cicero Ave | 17600 |
1009 | 2532 West | West | Washington St | 3500 |
1010 | 220 West | West | Washington St | 7300 |
1011 | 855 West | West | Washington St | 4750 |
1012 | 3935 West | West | Washington St | 8150 |
1013 | 1350 North | North | Wells St | 8850 |
1014 | 516 North | North | Wells St | 8150 |
1015 | 15 South | South | Wells St | 4950 |
1017 | 1023 North | North | Western Ave | 18300 |
1018 | 652 North | North | Western Ave | 16200 |
1019 | 350 South | South | Western Ave | 16950 |
1020 | 1314 West | West | 18th St | 4750 |
1021 | 3734 West | West | 26th St | 9200 |
1022 | 4344 West | West | 26th St | 8650 |
1023 | 891 South | South | Damen Ave | 15700 |
1024 | 4435 West | West | Division St | 8700 |
1025 | 5238 West | West | Division St | 9100 |
1026 | 700 South | South | Halsted St | 12650 |
1027 | 5212 West | West | Harrison St | 3250 |
1028 | 1533 North | North | Kostner Ave | 5300 |
1029 | 750 South | South | Kostner Ave | 8750 |
1031 | 250 North | North | Kostner Ave | 2850 |
1032 | 5124 West | West | Lake St | 5700 |
1033 | 850 South | South | Laramie Ave | 9400 |
1034 | 511 North | North | Laramie Ave | 10300 |
1035 | 5937 West | West | Madison St | 6700 |
1036 | 4640 West | West | Madison St | 12350 |
1037 | 803 South | South | Racine Ave | 7200 |
1038 | 5253 West | West | Roosevelt Rd | 10850 |
1039 | 3300 West | West | Roosevelt Rd | 10150 |
1041 | 250 East | East | 26th St | 4200 |
1042 | 310 West | West | 31st St | 7150 |
1043 | 52 East | East | 31st St | 5850 |
1044 | 452 West | West | 47th St | 9900 |
1045 | 316 West | West | 51st St | 7200 |
1046 | 335 West | West | 59th St | 8400 |
1047 | 344 West | West | 63rd St | 5400 |
1048 | 253 East | East | 63rd St | 8950 |
1049 | 1233 West | West | Adams St | 1900 |
1050 | 555 West | West | Adams St | 5850 |
1051 | 222 West | West | Adams St | 8200 |
1052 | 1020 West | West | Adams St | 2550 |
1053 | 2224 South | South | Archer Ave | 7650 |
1054 | 755 North | North | Ashland Ave | 15250 |
1055 | 1345 North | North | Ashland Ave | 17500 |
1056 | 320 South | South | Ashland Ave | 17850 |
1057 | 3654 West | West | Augusta Blvd | 5550 |
1058 | 1824 West | West | Augusta Blvd | 9450 |
1059 | 3049 West | West | Augusta Blvd | 4250 |
1060 | 165 North | North | Canal St | 5100 |
1061 | 536 North | North | Central Park Ave | 3800 |
1062 | 64 North | North | Central Park Ave | 6250 |
1063 | 303 East | East | Cermak Rd | 12850 |
1065 | 3652 West | West | Chicago Ave | 10000 |
1066 | 1020 West | West | Chicago Ave | 12750 |
1067 | 2650 West | West | Chicago Ave | 9400 |
1068 | 406 North | North | Clark St | 10350 |
1069 | 670 South | South | Clark St | 10200 |
1070 | 16 South | South | Clark St | 7750 |
1071 | 613 North | North | Clark St | 8650 |
1072 | 1101 South | South | Clark St | 12900 |
1074 | 168 North | North | Clinton St | 3450 |
1075 | 101 South | South | Clinton St | 5750 |
1077 | 843 South | South | Columbus Dr | 18500 |
1078 | 85 West | West | Congress Pkwy | 36200 |
1079 | 40 East | East | Congress Pkwy | 20350 |
1080 | 730 North | North | Damen Ave | 7800 |
As you can see, this code uses the traffic table we created previously. Using the SELECT statement you can create new columns that contain either characters or numbers. With valid statements within the SELECT clause, you can use any expression for new columns. And, the new columns can be named by using the keyword AS followed by the names you would like to use. (Column names also follow the rules for SAS names.) In the above code, the first new column is created by a character function scan()
, which substring is the orientation information from the existing column, count_location. The name for this new column is orientation
after AS. (It may make no sense, just for the use of example.) The second new column is a math expression that estimates the traffic volume during weekends by multiplying daily vehicle volume by 0.5. Its alias is weekends_traffic_volume
.
Launch and run the SAS program, and review the output to convince yourself that SAS does indeed create two new columns as you expect. But you should note that new columns only exist during the query unless you created a table out of it.
While observing the data in traffic, you may notice that some data are not formatted as you want. Fortunately, SAS provides many options in the SELECT statement so you can enhance the appearance of the query output.
Example 32.6
The following program adds the format to dates, labels columns, and adds titles to the output:
PROC SQL;
TITLE "Traffic volume in Area SS";
TITLE2 "During weekdays and weekends";
select id,
Date_of_count label='Date of Count' format=mmddyy10.,
count_location label='Location',
street,
passing_vehicle_volume label='Daily Volume' format=comma6.,
passing_vehicle_volume * 0.5 as weekends_traffic_volume label='Weekends Volume' format=comma6.
from traffic;
QUIT;
ID | Date of Count | Location | Street | Daily Volume | Weekends Volume |
---|---|---|---|---|---|
1 | 02/28/2006 | 2523 West | 71st Street | 14,600 | 7,300 |
2 | 03/09/2006 | 1708 West | 71st Street | 14,600 | 7,300 |
3 | 02/28/2006 | 1275 West | 71st Street | 16,500 | 8,250 |
5 | 02/28/2006 | 920 West | 71st Street | 18,200 | 9,100 |
6 | 02/28/2006 | 758 West | 71st Street | 21,600 | 10,800 |
7 | 02/28/2006 | 240 East | 71st St | 18,300 | 9,150 |
9 | 03/09/2006 | 2050 East | 71st St | 8,600 | 4,300 |
10 | 03/07/2006 | 8539 South | Commercial Ave | 10,000 | 5,000 |
11 | 03/07/2006 | 8933 South | Commercial Ave | 10,500 | 5,250 |
12 | 03/07/2006 | 9379 South | Commercial Ave | 12,700 | 6,350 |
13 | 03/07/2006 | 9730 South | Commercial Ave | 9,000 | 4,500 |
14 | 03/30/2006 | 4107 South | Cottage Grove Ave | 10,800 | 5,400 |
15 | 03/01/2006 | 4750 South | Cottage Grove Ave | 14,200 | 7,100 |
16 | 02/01/2006 | 5325 South | Cottage Grove Ave | 13,700 | 6,850 |
17 | 03/01/2006 | 6144 South | Cottage Grove Ave | 20,900 | 10,450 |
18 | 03/01/2006 | 6533 South | Cottage Grove Ave | 19,100 | 9,550 |
19 | 02/01/2006 | 6820 South | Cottage Grove Ave | 21,700 | 10,850 |
20 | 03/01/2006 | 7346 South | Cottage Grove Ave | 17,800 | 8,900 |
21 | 03/01/2006 | 8800 South | Cottage Grove Ave | 22,400 | 11,200 |
23 | 03/02/2006 | 10101 South | Cottage Grove Ave | 12,500 | 6,250 |
24 | 03/02/2006 | 1603 South | Damen Ave | 18,800 | 9,400 |
25 | 03/02/2006 | 1959 South | Damen Ave | 15,300 | 7,650 |
26 | 03/02/2006 | 2259 South | Damen Ave | 14,800 | 7,400 |
27 | 05/09/2006 | 2566 South | Damen Ave | 28,000 | 14,000 |
28 | 03/02/2006 | 3460 South | Damen Ave | 8,100 | 4,050 |
29 | 03/01/2006 | 3630 South | Damen Ave | 7,000 | 3,500 |
31 | 03/09/2006 | 4936 South | Damen Ave | 10,900 | 5,450 |
32 | 03/09/2006 | 5929 South | Damen Ave | 14,900 | 7,450 |
33 | 03/02/2006 | 6755 South | Damen Ave | 16,600 | 8,300 |
34 | 03/02/2006 | 7509 South | Damen Ave | 12,300 | 6,150 |
36 | 03/14/2006 | 3030 South | Dr Martin Luther King Jr Dr | 19,900 | 9,950 |
37 | 03/02/2006 | 3748 South | Dr Martin Luther King Jr Dr | 15,600 | 7,800 |
38 | 03/02/2006 | 4358 South | Dr Martin Luther King Jr Dr | 14,500 | 7,250 |
39 | 02/28/2006 | 5450 South | Dr Martin Luther King Jr Dr | 11,800 | 5,900 |
41 | 02/28/2006 | 7718 South | Dr Martin Luther King Jr Dr | 16,700 | 8,350 |
42 | 02/28/2006 | 9243 South | Dr Martin Luther King Jr Dr | 15,500 | 7,750 |
43 | 02/28/2006 | 10326 South | Dr Martin Luther King Jr Dr | 11,100 | 5,550 |
44 | 03/07/2006 | 7669 South | Exchange Ave | 8,300 | 4,150 |
45 | 03/07/2006 | 7952 South | Exchange Ave | 7,400 | 3,700 |
47 | 05/02/2006 | 1407 South | Indiana Ave | 8,300 | 4,150 |
48 | 03/02/2006 | 1933 South | Indiana Ave | 6,100 | 3,050 |
52 | 05/02/2006 | 3420 South | Indiana Ave | 7,400 | 3,700 |
53 | 03/02/2006 | 3654 South | Indiana Ave | 6,000 | 3,000 |
55 | 03/02/2006 | 5848 South | Indiana Ave | 4,400 | 2,200 |
56 | 05/11/2006 | 10320 South | Indianapolis Ave | 38,500 | 19,250 |
57 | 03/08/2006 | 6602 South | Jeffery Blvd | 21,200 | 10,600 |
58 | 05/04/2006 | 6841 South | Jeffery Blvd | 23,700 | 11,850 |
60 | 05/04/2006 | 7335 South | Jeffery Blvd | 24,300 | 12,150 |
61 | 03/08/2006 | 8127 South | Jeffery Blvd | 13,400 | 6,700 |
62 | 05/04/2006 | 8645 South | Jeffery Blvd | 19,300 | 9,650 |
63 | 03/29/2006 | 8547 South | Jeffery Blvd | 12,400 | 6,200 |
64 | 05/04/2006 | 9633 South | Jeffery Ave | 7,700 | 3,850 |
65 | 05/02/2006 | 7345 South | Dr Martin Luther King Jr Dr | 18,900 | 9,450 |
66 | 05/02/2006 | 2350 South | Dr Martin Luther King Jr Dr | 18,100 | 9,050 |
67 | 03/08/2006 | 5424 South | Lake Park Ave | 18,200 | 9,100 |
68 | 03/02/2006 | 1255 South | Michigan Ave | 20,600 | 10,300 |
69 | 03/02/2006 | 2317 South | Michigan Ave | 13,000 | 6,500 |
70 | 03/02/2006 | 2950 South | Michigan Ave | 13,200 | 6,600 |
71 | 03/02/2006 | 3311 South | Michigan Ave | 8,100 | 4,050 |
72 | 03/02/2006 | 3721 South | Michigan Ave | 8,000 | 4,000 |
73 | 03/02/2006 | 4563 South | Michigan Ave | 7,900 | 3,950 |
74 | 03/02/2006 | 5352 South | Michigan Ave | 7,900 | 3,950 |
75 | 03/15/2006 | 9642 South | Michigan Ave | 8,100 | 4,050 |
77 | 03/09/2006 | 6848 South | South Shore Dr | 35,100 | 17,550 |
78 | 03/09/2006 | 7732 South | South Shore Dr | 16,400 | 8,200 |
79 | 03/09/2006 | 2425 East | South Shore Dr | 17,300 | 8,650 |
81 | 05/02/2006 | 1420 South | State St | 23,100 | 11,550 |
82 | 03/07/2006 | 3333 South | State St | 10,100 | 5,050 |
83 | 05/02/2006 | 4605 South | State St | 21,500 | 10,750 |
84 | 03/07/2006 | 5625 South | State St | 16,100 | 8,050 |
85 | 05/02/2006 | 6416 South | State St | 19,300 | 9,650 |
86 | 03/28/2006 | 7539 South | State St | 12,500 | 6,250 |
87 | 05/02/2006 | 8149 South | State St | 7,500 | 3,750 |
88 | 03/08/2006 | 9124 South | State St | 4,900 | 2,450 |
89 | 05/02/2006 | 9940 South | State St | 7,300 | 3,650 |
90 | 03/07/2006 | 2130 South | Wentworth Ave | 4,500 | 2,250 |
91 | 03/07/2006 | 6629 South | Wentworth Ave | 7,100 | 3,550 |
92 | 03/08/2006 | 9532 South | Wentworth Ave | 4,900 | 2,450 |
93 | 03/08/2006 | 3430 South | Archer Ave | 23,400 | 11,700 |
94 | 03/08/2006 | 2140 South | Archer Ave | 11,800 | 5,900 |
95 | 03/08/2006 | 4709 South | Archer Ave | 27,800 | 13,900 |
96 | 03/08/2006 | 2345 South | Archer Ave | 13,300 | 6,650 |
97 | 03/08/2006 | 3247 South | Archer Ave | 15,100 | 7,550 |
98 | 03/21/2006 | 320 South | Ashland Ave | 29,300 | 14,650 |
99 | 03/21/2006 | 711 South | Ashland Ave | 38,700 | 19,350 |
100 | 03/21/2006 | 1447 South | Ashland Ave | 38,300 | 19,150 |
103 | 03/14/2006 | 6154 South | Ashland Ave | 23,500 | 11,750 |
104 | 03/21/2006 | 6480 South | Ashland Ave | 27,100 | 13,550 |
105 | 03/21/2006 | 7132 South | Ashland Ave | 35,000 | 17,500 |
106 | 03/21/2006 | 7500 South | Ashland Ave | 26,300 | 13,150 |
107 | 03/14/2006 | 8140 South | Ashland Ave | 26,300 | 13,150 |
108 | 03/14/2006 | 8822 South | Ashland Ave | 27,800 | 13,900 |
109 | 03/15/2006 | 719 South | Clark St | 13,600 | 6,800 |
110 | 03/22/2006 | 996 South | Clark St | 22,600 | 11,300 |
111 | 03/22/2006 | 1515 South | Clark St | 23,000 | 11,500 |
112 | 03/15/2006 | 1918 South | Clark St | 14,800 | 7,400 |
113 | 03/15/2006 | 2123 South | Clark St | 12,800 | 6,400 |
114 | 03/21/2006 | 700 South | Halsted St | 15,600 | 7,800 |
115 | 03/21/2006 | 1302 South | Halsted St | 13,400 | 6,700 |
116 | 03/21/2006 | 3541 South | Halsted St | 15,300 | 7,650 |
117 | 03/15/2006 | 5348 South | Halsted St | 15,000 | 7,500 |
118 | 03/21/2006 | 6020 South | Halsted St | 13,200 | 6,600 |
119 | 03/21/2006 | 6722 South | Halsted St | 13,500 | 6,750 |
120 | 03/21/2006 | 7328 South | Halsted St | 16,700 | 8,350 |
121 | 03/21/2006 | 8728 South | Halsted St | 30,900 | 15,450 |
122 | 03/21/2006 | 9550 South | Halsted St | 37,900 | 18,950 |
124 | 03/29/2006 | 7925 South | Vincennes Ave | 21,200 | 10,600 |
125 | 03/21/2006 | 8940 South | Vincennes Ave | 16,300 | 8,150 |
126 | 03/21/2006 | 9520 South | Vincennes Ave | 12,500 | 6,250 |
127 | 03/21/2006 | 10122 South | Vincennes Ave | 13,700 | 6,850 |
129 | 03/21/2006 | 10748 South | Vincennes Ave | 18,000 | 9,000 |
130 | 03/22/2006 | 721 South | Western Ave | 29,500 | 14,750 |
131 | 03/14/2006 | 2446 South | Western Ave | 25,500 | 12,750 |
132 | 03/22/2006 | 3225 South | Western Ave | 35,300 | 17,650 |
133 | 03/14/2006 | 4028 South | Western Ave | 25,600 | 12,800 |
135 | 03/23/2006 | 6642 South | Western Ave | 39,100 | 19,550 |
136 | 03/23/2006 | 7234 South | Western Ave | 40,500 | 20,250 |
137 | 03/14/2006 | 7521 South | Western Ave | 27,300 | 13,650 |
138 | 03/14/2006 | 8941 South | Western Ave | 30,800 | 15,400 |
139 | 03/23/2006 | 9933 South | Western Ave | 35,700 | 17,850 |
141 | 03/23/2006 | 10630 South | Western Ave | 36,600 | 18,300 |
142 | 03/23/2006 | 5420 South | Western Blvd | 20,100 | 10,050 |
143 | 03/09/2006 | 9750 South | Stony Island Ave | 43,500 | 21,750 |
144 | 03/14/2006 | 7648 South | Stony Island Ave | 72,900 | 36,450 |
145 | 03/14/2006 | 8450 South | Stony Island Ave | 61,500 | 30,750 |
146 | 03/09/2006 | 9348 South | Stony Island Ave | 47,900 | 23,950 |
147 | 04/04/2007 | 8216 South | Stony Island Ave | 61,600 | 30,800 |
148 | 03/14/2006 | 6840 South | Stony Island Ave | 52,500 | 26,250 |
149 | 03/14/2006 | 5640 South | Stony Island Ave | 12,500 | 6,250 |
150 | 05/04/2006 | 2936 East | 92nd St | 41,300 | 20,650 |
151 | 05/05/2006 | 3010 East | 92nd St | 28,500 | 14,250 |
152 | 03/21/2006 | 1354 West | 99th Street | 12,800 | 6,400 |
153 | 03/21/2006 | 1620 West | 99th Street | 11,300 | 5,650 |
154 | 05/04/2006 | 2701 East | 100th St | 11,000 | 5,500 |
155 | 05/04/2006 | 3250 East | 100th St | 12,800 | 6,400 |
156 | 03/21/2006 | 9621 South | Avenue L | 5,000 | 2,500 |
157 | 03/21/2006 | 10129 South | Avenue L | 4,200 | 2,100 |
158 | 05/09/2006 | 9604 South | Beverly Ave | 20,300 | 10,150 |
159 | 03/21/2006 | 9927 South | Longwood Dr | 5,300 | 2,650 |
160 | 05/04/2006 | 9150 South | Harbor Ave | 2,500 | 1,250 |
161 | 05/04/2006 | 8930 South | Mackinaw Ave | 13,800 | 6,900 |
162 | 03/28/2006 | 7206 South | Yates Blvd | 12,500 | 6,250 |
163 | 03/28/2006 | 2237 West | 63rd Street | 18,000 | 9,000 |
164 | 03/28/2006 | 1445 West | 63rd Street | 10,800 | 5,400 |
165 | 03/28/2006 | 519 West | 63rd St | 8,000 | 4,000 |
166 | 03/28/2006 | 120 East | 63rd St | 12,400 | 6,200 |
167 | 03/28/2006 | 642 East | 67th St | 12,600 | 6,300 |
168 | 03/28/2006 | 1440 East | 67th St | 9,200 | 4,600 |
169 | 03/28/2006 | 1733 East | 67th St | 10,300 | 5,150 |
170 | 03/28/2006 | 175 West | 75th Street | 17,600 | 8,800 |
171 | 05/09/2006 | 46 East | 75th St | 11,700 | 5,850 |
172 | 03/28/2006 | 504 East | 75th St | 16,100 | 8,050 |
173 | 03/28/2006 | 1744 East | 75th St | 13,100 | 6,550 |
174 | 03/28/2006 | 1908 West | 76th Street | 8,000 | 4,000 |
175 | 03/28/2006 | 718 West | 76th Street | 15,400 | 7,700 |
176 | 03/28/2006 | 320 East | 76th St | 8,600 | 4,300 |
177 | 03/28/2006 | 448 East | 76th St | 9,300 | 4,650 |
178 | 03/28/2006 | 1716 East | 76th St | 8,600 | 4,300 |
179 | 03/28/2006 | 2830 West | 79th Street | 33,300 | 16,650 |
181 | 03/28/2006 | 1344 West | 79th Street | 17,300 | 8,650 |
182 | 03/28/2006 | 1055 West | 79th Street | 17,600 | 8,800 |
183 | 03/28/2006 | 540 West | 79th Street | 19,200 | 9,600 |
184 | 03/28/2006 | 20 East | 79th St | 20,700 | 10,350 |
185 | 03/28/2006 | 65 East | 79th St | 17,600 | 8,800 |
186 | 03/28/2006 | 850 East | 79th St | 16,300 | 8,150 |
187 | 03/28/2006 | 2726 East | 79th St | 11,400 | 5,700 |
188 | 03/23/2006 | 1715 West | 83rd Street | 12,100 | 6,050 |
189 | 03/28/2006 | 1101 West | 83rdStreet | 15,100 | 7,550 |
190 | 03/23/2006 | 10 East | 83rd St | 18,400 | 9,200 |
191 | 03/28/2006 | 505 East | 83rd Street | 18,000 | 9,000 |
192 | 03/23/2006 | 1240 East | 83rd Street | 15,600 | 7,800 |
193 | 03/28/2006 | 1165 East | 83rd Street | 9,000 | 4,500 |
194 | 03/23/2006 | 2848 East | 83rd Street | 8,300 | 4,150 |
195 | 03/28/2006 | 3045 East | 83rd St | 7,300 | 3,650 |
196 | 03/23/2006 | 1720 West | 87th Street | 29,500 | 14,750 |
197 | 03/28/2006 | 1428 West | 87th Street | 31,600 | 15,800 |
198 | 03/23/2006 | 817 East | 87th Street | 21,300 | 10,650 |
199 | 03/28/2006 | 551 West | 87th Street | 28,600 | 14,300 |
200 | 03/28/2006 | 282 West | 87th Street | 15,800 | 7,900 |
201 | 03/28/2006 | 71 East | 87th Street | 24,600 | 12,300 |
202 | 03/23/2006 | 920 East | 87th Street | 19,400 | 9,700 |
203 | 03/28/2006 | 2040 East | 87th Street | 14,100 | 7,050 |
204 | 03/28/2006 | 3100 East | 87th Street | 8,800 | 4,400 |
205 | 03/22/2006 | 2108 West | 95th Street | 25,500 | 12,750 |
206 | 03/28/2006 | 1850 West | 95th Street | 31,600 | 15,800 |
207 | 03/28/2006 | 1222 West | 95th Street | 32,900 | 16,450 |
208 | 03/22/2006 | 948 West | 95th Street | 29,100 | 14,550 |
209 | 03/22/2006 | 305 West | 95th Street | 29,900 | 14,950 |
210 | 03/28/2006 | 202 West | 95th Street | 33,900 | 16,950 |
211 | 03/28/2006 | 206 East | 95th Street | 30,400 | 15,200 |
212 | 03/22/2006 | 1057 East | 95th Street | 22,000 | 11,000 |
213 | 03/22/2006 | 2097 East | 95th Street | 32,100 | 16,050 |
214 | 03/28/2006 | 3502 East | 95th Street | 16,800 | 8,400 |
216 | 03/28/2006 | 537 West | 103rd Street | 18,700 | 9,350 |
217 | 03/22/2006 | 112 West | 103rd Street | 18,600 | 9,300 |
218 | 03/28/2006 | 235 East | 103rd St | 21,700 | 10,850 |
219 | 03/22/2006 | 907 East | 103rd St | 17,800 | 8,900 |
220 | 03/28/2006 | 7141 South | Chicago Ave | 19,100 | 9,550 |
221 | 03/15/2006 | 2230 West | Garfield Blvd | 28,800 | 14,400 |
222 | 03/15/2006 | 1848 West | Garfield Blvd | 33,200 | 16,600 |
223 | 03/14/2006 | 226 East | Garfield Blvd | 31,800 | 15,900 |
224 | 03/22/2006 | 120 West | Garfield Blvd | 38,700 | 19,350 |
225 | 03/22/2006 | 1359 South | Loomis St | 4,200 | 2,100 |
226 | 03/09/2006 | 1905 South | Loomis St | 5,300 | 2,650 |
227 | 03/23/2006 | 5038 South | Loomis St | 2,000 | 1,000 |
228 | 03/23/2006 | 5710 South | Loomis St | 3,500 | 1,750 |
229 | 03/09/2006 | 6628 South | Loomis St | 5,500 | 2,750 |
230 | 03/09/2006 | 6732 South | Loomis St | 5,900 | 2,950 |
231 | 03/23/2006 | 7807 South | Loomis St | 6,600 | 3,300 |
232 | 03/23/2006 | 8210 South | Loomis St | 5,500 | 2,750 |
233 | 03/30/2006 | 1031 South | Racine Ave | 10,700 | 5,350 |
234 | 03/22/2006 | 1340 South | Racine Ave | 5,400 | 2,700 |
235 | 03/23/2006 | 3538 South | Racine Ave | 2,600 | 1,300 |
236 | 03/23/2006 | 4411 South | Racine Ave | 6,700 | 3,350 |
237 | 03/23/2006 | 5235 South | Racine Ave | 7,700 | 3,850 |
238 | 03/23/2006 | 6240 South | Racine Ave | 11,000 | 5,500 |
239 | 03/23/2006 | 6710 South | Racine Ave | 11,300 | 5,650 |
240 | 03/28/2006 | 7119 South | Racine Ave | 11,100 | 5,550 |
241 | 03/28/2006 | 7724 South | Racine Ave | 10,700 | 5,350 |
242 | 03/23/2006 | 8228 South | Racine Ave | 11,800 | 5,900 |
243 | 03/30/2006 | 2263 West | 18th Street | 6,700 | 3,350 |
244 | 03/30/2006 | 223 West | 18th Street | 8,500 | 4,250 |
245 | 04/26/2006 | 68 West | 18th St | 8,100 | 4,050 |
246 | 04/25/2006 | 118 West | 18th St | 3,800 | 1,900 |
247 | 03/30/2006 | 943 West | 31st St | 10,000 | 5,000 |
248 | 03/30/2006 | 1139 West | 31st St | 8,200 | 4,100 |
249 | 05/04/2006 | 315 West | 31st St | 16,100 | 8,050 |
250 | 04/25/2006 | 20 West | 31st St | 14,400 | 7,200 |
252 | 04/25/2006 | 217 East | 31st St | 14,000 | 7,000 |
253 | 03/30/2006 | 2307 West | 35th St | 10,200 | 5,100 |
254 | 03/29/2006 | 2017 West | 35th St | 15,200 | 7,600 |
255 | 04/25/2006 | 1301 West | 35th St | 17,000 | 8,500 |
256 | 04/25/2006 | 507 West | 35th St | 15,900 | 7,950 |
257 | 03/29/2006 | 256 East | 35th St | 10,200 | 5,100 |
258 | 05/09/2006 | 521 East | 35th St | 9,600 | 4,800 |
259 | 03/29/2006 | 1623 West | 43rd St | 6,100 | 3,050 |
260 | 03/29/2006 | 1430 West | 43rd St | 4,800 | 2,400 |
261 | 04/25/2006 | 506 West | 43rd St | 6,800 | 3,400 |
263 | 04/25/2006 | 450 East | 43rd St | 8,900 | 4,450 |
264 | 03/29/2006 | 1707 West | 47th St | 18,100 | 9,050 |
265 | 03/29/2006 | 1439 West | 47th St | 16,000 | 8,000 |
266 | 04/25/2006 | 20 West | 47th St | 15,300 | 7,650 |
267 | 04/27/2006 | 410 East | 47th St | 14,700 | 7,350 |
268 | 04/27/2006 | 1048 East | 47th St | 17,200 | 8,600 |
269 | 03/29/2006 | 1706 West | 51st Street | 9,600 | 4,800 |
270 | 03/29/2006 | 929 West | 51st Street | 8,900 | 4,450 |
271 | 04/27/2006 | 715 West | 51st St | 8,500 | 4,250 |
272 | 04/27/2006 | 40 West | 51st St | 9,400 | 4,700 |
273 | 04/27/2006 | 329 East | 51st St | 8,800 | 4,400 |
274 | 04/27/2006 | 718 East | 51st St | 9,100 | 4,550 |
277 | 04/27/2006 | 944 West | 55th Street | 33,800 | 16,900 |
278 | 04/27/2006 | 410 East | 55th St | 22,800 | 11,400 |
279 | 04/27/2006 | 1340 East | 55th St | 15,700 | 7,850 |
280 | 03/28/2006 | 2635 West | 59th Street | 13,400 | 6,700 |
281 | 03/28/2006 | 1715 West | 59th Street | 11,700 | 5,850 |
282 | 04/27/2006 | 1115 West | 59th St | 16,300 | 8,150 |
283 | 04/27/2006 | 609 West | 59th St | 14,700 | 7,350 |
284 | 03/28/2006 | 124 West | 59th Street | 8,900 | 4,450 |
285 | 03/28/2006 | 261 East | 59th St | 6,500 | 3,250 |
286 | 03/30/2006 | 2525 South | Blue Island Ave | 18,100 | 9,050 |
287 | 03/30/2006 | 2358 South | Blue Island Ave | 13,400 | 6,700 |
288 | 03/30/2006 | 1623 South | Blue Island Ave | 5,200 | 2,600 |
289 | 03/30/2006 | 2235 West | Cermak Rd | 13,700 | 6,850 |
290 | 03/30/2006 | 1730 West | Cermak Rd | 11,500 | 5,750 |
291 | 04/25/2006 | 1248 West | Cermak Rd | 17,300 | 8,650 |
292 | 05/09/2006 | 234 West | Cermak Rd | 16,700 | 8,350 |
293 | 05/08/2006 | 415 West | Cermak Rd | 12,300 | 6,150 |
294 | 04/25/2006 | 20 West | Cermak Rd | 19,900 | 9,950 |
295 | 04/25/2006 | 67 East | Cermak Rd | 14,700 | 7,350 |
296 | 05/02/2006 | 120 East | Cermak Rd | 15,800 | 7,900 |
298 | 04/27/2006 | 1015 East | Hyde Park Blvd | 9,700 | 4,850 |
299 | 04/27/2006 | 5434 South | Hyde Park Blvd | 7,400 | 3,700 |
300 | 03/28/2006 | 2509 West | Marquette Rd | 14,900 | 7,450 |
301 | 03/28/2006 | 2208 West | Marquette Rd | 15,300 | 7,650 |
302 | 04/27/2006 | 660 West | Marquette Rd | 19,900 | 9,950 |
303 | 04/27/2006 | 205 East | Marquette Rd | 16,800 | 8,400 |
304 | 04/27/2006 | 840 East | Marquette Rd | 14,200 | 7,100 |
305 | 03/09/2006 | 3610 South | Morgan St | 5,300 | 2,650 |
306 | 03/09/2006 | 6830 South | Morgan St | 4,200 | 2,100 |
307 | 03/09/2006 | 7230 South | Morgan St | 3,600 | 1,800 |
308 | 04/25/2006 | 1431 West | Pershing Rd | 19,500 | 9,750 |
309 | 04/25/2006 | 340 West | Pershing Rd | 15,400 | 7,700 |
310 | 04/25/2006 | 268 East | Pershing Rd | 7,200 | 3,600 |
311 | 04/25/2006 | 750 East | Pershing Rd | 9,800 | 4,900 |
312 | 04/25/2006 | 1640 West | Roosevelt Rd | 28,200 | 14,100 |
313 | 04/25/2006 | 813 West | Roosevelt Rd | 31,600 | 15,800 |
314 | 04/25/2006 | 412 West | Roosevelt Rd | 41,300 | 20,650 |
315 | 05/04/2006 | 52 East | Roosevelt RD | 33,200 | 16,600 |
316 | 03/30/2006 | 125 East | 24th St | 700 | 350 |
317 | 03/28/2006 | 575 West | 26TH ST | 6,900 | 3,450 |
318 | 03/28/2006 | 140 East | 26th St | 7,800 | 3,900 |
319 | 03/28/2006 | 1533 East | 56th St | 13,600 | 6,800 |
320 | 03/28/2006 | 1621 East | 57th St | 39,500 | 19,750 |
321 | 03/28/2006 | 771 East | 60th St | 2,900 | 1,450 |
322 | 03/28/2006 | 1171 West | 74th St | 10,100 | 5,050 |
323 | 03/28/2006 | 3036 East | 83rd Pl | 1,300 | 650 |
324 | 03/28/2006 | 3223 East | 85th St | 12,300 | 6,150 |
325 | 04/26/2006 | 77 East | Balbo Ave | 10,500 | 5,250 |
326 | 04/26/2006 | 271 East | Balbo Dr | 12,400 | 6,200 |
327 | 04/26/2006 | 530 East | Best Dr | 5,600 | 2,800 |
328 | 04/26/2006 | 1073 South | Columbus Dr | 37,900 | 18,950 |
329 | 03/28/2006 | 5065 South | Drexel Blvd | 6,600 | 3,300 |
330 | 03/28/2006 | 1650 East | Midway Plaisance | 13,400 | 6,700 |
331 | 03/28/2006 | 520 East | Morgan Dr | 28,200 | 14,100 |
332 | 03/28/2006 | 650 East | Rainey Dr | 16,300 | 8,150 |
333 | 03/28/2006 | 3319 West | Harrison St | 2,300 | 1,150 |
334 | 03/28/2006 | 2380 West | Harrison St | 5,300 | 2,650 |
335 | 04/26/2006 | 1973 West | Harrison St | 7,900 | 3,950 |
336 | 03/28/2006 | 1739 West | Harrison St | 10,600 | 5,300 |
337 | 04/26/2006 | 1519 West | Harrison St | 8,800 | 4,400 |
338 | 04/26/2006 | 1015 West | Harrison St | 15,000 | 7,500 |
339 | 03/28/2006 | 15 East | Harrison ST | 5,900 | 2,950 |
340 | 04/26/2006 | 754 West | Harrison St | 11,000 | 5,500 |
341 | 03/28/2006 | 1219 South | Jefferson St | 4,800 | 2,400 |
342 | 04/26/2006 | 651 South | Jefferson St | 6,400 | 3,200 |
343 | 03/28/2006 | 1300 East | Midway Plaisance | 16,700 | 8,350 |
344 | 03/28/2006 | 830 East | Oakwood Blvd | 4,900 | 2,450 |
345 | 05/02/2006 | 188 West | Polk St | 8,900 | 4,450 |
347 | 03/28/2006 | 9943 South | Beverly Ave | 11,900 | 5,950 |
348 | 03/28/2006 | 8349 South | Bond Ave | 11,100 | 5,550 |
349 | 03/28/2006 | 8527 South | Burley Ave | 18,100 | 9,050 |
350 | 10/17/2006 | 2010 South | Calumet Ave | 2,400 | 1,200 |
351 | 10/02/2006 | 460 South | Canal St | 15,600 | 7,800 |
352 | 10/02/2006 | 538 South | Clinton St | 7,300 | 3,650 |
354 | 10/18/2006 | 9592 South | Colfax Ave | 13,100 | 6,550 |
355 | 09/21/2006 | 1161 South | Columbus Dr | 37,800 | 18,900 |
356 | 10/26/2006 | 6100 South | Cornell Dr | 43,000 | 21,500 |
357 | 09/19/2006 | 637 South | Dearborn St | 7,800 | 3,900 |
358 | 10/03/2006 | 682 South | Des Plaines St | 6,300 | 3,150 |
360 | 08/24/2006 | 11043 South | Longwood Dr | 6,700 | 3,350 |
361 | 10/04/2006 | 7409 South | Parnell Ave | 1,200 | 600 |
362 | 05/04/2006 | 5510 South | Payne Dr | 17,200 | 8,600 |
363 | 05/04/2006 | 3027 South | Pitney Ct | 1,800 | 900 |
364 | 05/04/2006 | 6400 South | Richards Dr | 8,200 | 4,100 |
365 | 05/04/2006 | 7020 South | St Lawrence Ave | 5,000 | 2,500 |
366 | 05/09/2006 | 8620 South | Summit Ave | 6,200 | 3,100 |
367 | 05/04/2006 | 9915 South | Van Vlissingen Rd | 6,800 | 3,400 |
368 | 05/02/2006 | 634 South | Wabash Ave | 9,100 | 4,550 |
369 | 05/02/2006 | 1130 South | Wabash Ave | 11,500 | 5,750 |
370 | 05/11/2006 | 1040 South | Wells St | 4,200 | 2,100 |
371 | 05/04/2006 | 5121 South | Woodlawn Ave | 8,100 | 4,050 |
372 | 05/09/2006 | 1760 West | Ogden Ave | 20,100 | 10,050 |
373 | 05/09/2006 | 2124 West | Ogden Ave | 22,700 | 11,350 |
374 | 05/09/2006 | 2653 West | Ogden Ave | 23,900 | 11,950 |
375 | 05/09/2006 | 2701 West | Pope John Paul II | 7,000 | 3,500 |
376 | 05/09/2006 | 742 West | Root St | 3,200 | 1,600 |
377 | 05/02/2006 | 5224 South | Woodlawn Ave | 7,200 | 3,600 |
378 | 05/02/2006 | 4929 South | Woodlawn Ave | 5,500 | 2,750 |
379 | 05/02/2006 | 4624 South | Woodlawn Ave | 3,000 | 1,500 |
380 | 04/05/2006 | 1550 South | Lake Shore Dr | 165200 | 82,600 |
381 | 04/05/2006 | 5250 South | Lake Shore Dr | 111600 | 55,800 |
382 | 11/14/2006 | 10344 South | Torrence Ave | 21,600 | 10,800 |
383 | 10/18/2006 | 10250 South | Ewing Ave | 6,800 | 3,400 |
384 | 11/01/2006 | 10535 South | Wentworth Ave | 8,300 | 4,150 |
385 | 08/22/2006 | 10452 South | Kedzie Ave | 22,000 | 11,000 |
386 | 09/06/2006 | 11335 South | Michigan Ave | 11,900 | 5,950 |
387 | 10/04/2006 | 11201 South | Cottage Grove Ave | 6,700 | 3,350 |
388 | 08/31/2006 | 11750 South | State St | 7,800 | 3,900 |
389 | 08/31/2006 | 11600 South | Halsted St | 30,300 | 15,150 |
390 | 08/23/2006 | 11867 South | Vincennes Ave | 7,000 | 3,500 |
391 | 11/14/2006 | 12423 South | Michigan Ave | 8,900 | 4,450 |
392 | 08/31/2006 | 12007 South | State St | 6,300 | 3,150 |
393 | 08/29/2006 | 12054 South | Wentworth Ave | 3,100 | 1,550 |
394 | 11/08/2006 | 13027 South | Baltimore Ave | 4,400 | 2,200 |
395 | 08/31/2006 | 12940 South | Torrence Ave | 18,600 | 9,300 |
396 | 11/08/2006 | 13200 South | Torrence Ave | 15,100 | 7,550 |
397 | 10/11/2006 | 6559 South | Damen Ave | 21,500 | 10,750 |
398 | 10/12/2006 | 1600 West | Ogden Ave | 19,900 | 9,950 |
399 | 08/31/2006 | 133 South | Ashland Ave | 31,700 | 15,850 |
400 | 10/02/2006 | 120 South | Des Plaines St | 8,800 | 4,400 |
401 | 08/31/2006 | 852 North | Ashland Ave | 34,400 | 17,200 |
402 | 09/26/2006 | 2535 West | Pershing Rd | 12,300 | 6,150 |
403 | 10/23/2006 | 4923 West | Grand Ave | 12,500 | 6,250 |
404 | 10/16/2006 | 2125 North | Cicero Ave | 39,900 | 19,950 |
405 | 10/24/2006 | 1463 West | Montrose Ave | 16,700 | 8,350 |
406 | 10/11/2006 | 1440 West | 55th St | 35,200 | 17,600 |
407 | 10/19/2006 | 1423 West | Lake St | 9,700 | 4,850 |
408 | 08/10/2006 | 1425 West | Diversey Ave | 21,700 | 10,850 |
409 | 10/16/2006 | 1125 North | Cicero Ave | 37,800 | 18,900 |
410 | 10/23/2006 | 1117 North | Laramie Ave | 19,500 | 9,750 |
411 | 11/13/2006 | 1055 North | Central Ave | 22,700 | 11,350 |
412 | 11/14/2006 | 5862 West | Jackson Blvd | 9,800 | 4,900 |
413 | 10/19/2006 | 5700 West | Washington St | 10,800 | 5,400 |
414 | 11/14/2006 | 5838 West | Lake St | 7,100 | 3,550 |
416 | 11/15/2006 | 5854 West | Division St | 12,200 | 6,100 |
417 | 10/23/2006 | 5741 West | Grand Ave | 21,700 | 10,850 |
418 | 08/10/2006 | 5900 West | Diversey Ave | 21,800 | 10,900 |
419 | 10/25/2006 | 5850 West | Montrose Ave | 22,700 | 11,350 |
420 | 10/18/2006 | 3541 East | 106th St | 16,500 | 8,250 |
421 | 11/08/2006 | 13101 South | Brainard Ave | 16,200 | 8,100 |
422 | 08/31/2006 | 3220 East | 134th St | 4,700 | 2,350 |
423 | 10/25/2006 | 2851 North | Austin Ave | 21,300 | 10,650 |
424 | 08/15/2006 | 618 West | Addison St | 11,600 | 5,800 |
425 | 06/19/2007 | 1050 West | Hollywood Ave | 35,200 | 17,600 |
426 | 10/12/2006 | 5333 North | Sheridan Ave | 12,500 | 6,250 |
428 | 10/16/2006 | 2900 West | 26th St | 13,700 | 6,850 |
429 | 01/09/2007 | 2531 West | 51st St | 20,200 | 10,100 |
430 | 08/10/2006 | 2738 West | 47th St | 23,700 | 11,850 |
431 | 09/14/2006 | 2703 West | Cermak Rd | 14,200 | 7,100 |
432 | 10/19/2006 | 2700 West | Roosevelt Rd | 18,300 | 9,150 |
433 | 08/17/2006 | 2439 West | 43rd St | 4,200 | 2,100 |
434 | 10/11/2006 | 7430 West | Talcott Ave | 12,300 | 6,150 |
435 | 09/14/2006 | 3654 West | 16th St | 9,500 | 4,750 |
436 | 08/24/2006 | 5301 West | Irving Park Rd | 34,500 | 17,250 |
437 | 08/17/2006 | 5400 West | Fullerton Ave | 37,900 | 18,950 |
438 | 10/18/2006 | 3543 West | North Ave | 39,500 | 19,750 |
439 | 10/19/2006 | 3656 West | Washington St | 11,800 | 5,900 |
440 | 10/12/2006 | 3433 West | Madison St | 15,600 | 7,800 |
441 | 10/16/2006 | 3534 West | Wrightwood Ave | 10,600 | 5,300 |
442 | 08/10/2006 | 4856 West | Foster Ave | 27,600 | 13,800 |
443 | 10/19/2006 | 4637 West | Roosevelt Rd | 22,600 | 11,300 |
445 | 10/19/2006 | 4444 West | Chicago Ave | 21,400 | 10,700 |
446 | 10/18/2006 | 4517 West | North Ave | 34,900 | 17,450 |
447 | 09/26/2006 | 1303 West | Wilson Ave | 12,700 | 6,350 |
448 | 08/20/2006 | 1450 West | Foster Ave | 24,100 | 12,050 |
449 | 10/24/2006 | 1418 West | Bryn Mawr Ave | 6,500 | 3,250 |
450 | 09/19/2006 | 54 West | Chicago Ave | 23,000 | 11,500 |
451 | 09/26/2006 | 51 West | Ontario St | 18,400 | 9,200 |
452 | 08/23/2006 | 1420 West | Pratt Blvd | 7,100 | 3,550 |
453 | 09/27/2006 | 105 West | Congress Pkwy | 76,700 | 38,350 |
454 | 08/29/2006 | 711 East | 111th St | 16,500 | 8,250 |
455 | 10/18/2006 | 1650 West | North Ave | 20,900 | 10,450 |
457 | 08/22/2006 | 1649 West | Foster Ave | 25,600 | 12,800 |
458 | 11/14/2006 | 1828 West | Chicago Ave | 17,400 | 8,700 |
459 | 09/20/2006 | 25 West | Van Buren St | 7,400 | 3,700 |
460 | 09/28/2006 | 19 West | Jackson Blvd | 10,100 | 5,050 |
461 | 10/03/2006 | 15 West | Adams St | 11,200 | 5,600 |
462 | 09/19/2006 | 30 East | Monroe St | 13,000 | 6,500 |
463 | 10/03/2006 | 15 West | Madison St | 11,500 | 5,750 |
464 | 10/02/2006 | 10 West | Lake St | 13,700 | 6,850 |
465 | 09/26/2006 | 27 West | Washington St | 14,300 | 7,150 |
466 | 09/19/2006 | 24 West | Randolph St | 18,000 | 9,000 |
467 | 08/23/2006 | 6526 North | California Ave | 11,400 | 5,700 |
468 | 10/18/2006 | 3455 East | 112th St | 7,700 | 3,850 |
469 | 08/22/2006 | 3980 West | 111th St | 20,200 | 10,100 |
470 | 08/29/2006 | 738 West | 107th St | 10,900 | 5,450 |
471 | 08/15/2006 | 3900 West | 79th St | 32,000 | 16,000 |
472 | 08/22/2006 | 3908 West | Marquette St | 18,000 | 9,000 |
474 | 08/15/2006 | 3933 West | 63rd St | 24,000 | 12,000 |
475 | 09/12/2006 | 5858 South | Archer Ave | 28,700 | 14,350 |
476 | 09/12/2006 | 4630 West | 55th St | 23,300 | 11,650 |
477 | 08/22/2006 | 3535 West | 47th St | 23,600 | 11,800 |
478 | 11/14/2006 | 4706 West | 47th St | 30,300 | 15,150 |
479 | 09/26/2006 | 2719 West | 35th St | 11,600 | 5,800 |
480 | 09/14/2006 | 3142 West | 16th St | 2,900 | 1,450 |
481 | 10/19/2006 | 4733 West | Lake St | 16,100 | 8,050 |
482 | 11/13/2006 | 4307 West | Grand Ave | 11,900 | 5,950 |
483 | 08/16/2006 | 500 West | Fullerton Ave | 18,500 | 9,250 |
484 | 10/24/2006 | 2293 North | Clybourn Ave | 16,400 | 8,200 |
485 | 08/14/2006 | 8318 West | Addison St | 11,100 | 5,550 |
486 | 08/10/2006 | 3845 West | Lawrence Ave | 23,800 | 11,900 |
487 | 08/16/2006 | 8950 West | Lawrence Ave | 24,600 | 12,300 |
488 | 09/19/2006 | 3816 West | Bryn Mawr Ave | 14,500 | 7,250 |
489 | 08/22/2006 | 3318 West | Peterson Ave | 38,300 | 19,150 |
490 | 08/22/2006 | 2314 West | Peterson Ave | 44,000 | 22,000 |
491 | 08/30/2006 | 2307 West | Devon Ave | 22,200 | 11,100 |
492 | 08/15/2006 | 7114 West | Devon Ave | 22,600 | 11,300 |
494 | 10/18/2006 | 3947 West | Jackson Blvd | 13,300 | 6,650 |
495 | 10/05/2006 | 2345 West | Jackson Blvd | 4,900 | 2,450 |
496 | 10/05/2006 | 1645 West | Jackson Blvd | 5,500 | 2,750 |
497 | 10/05/2006 | 1540 West | Jackson Blvd | 6,600 | 3,300 |
498 | 09/28/2006 | 350 East | Jackson Dr | 17,600 | 8,800 |
499 | 10/05/2006 | 1880 West | Adams St | 3,500 | 1,750 |
500 | 10/05/2006 | 2344 West | Adams St | 3,400 | 1,700 |
501 | 11/15/2006 | 3932 West | Madison St | 19,300 | 9,650 |
502 | 11/13/2006 | 3542 West | Lake St | 9,400 | 4,700 |
503 | 11/13/2006 | 3116 West | Lake St | 5,700 | 2,850 |
504 | 09/26/2006 | 10 East | Washington St | 12,700 | 6,350 |
505 | 11/15/2006 | 2324 West | Warren Blvd | 6,500 | 3,250 |
506 | 10/12/2006 | 2335 West | Madison St | 13,200 | 6,600 |
507 | 10/19/2006 | 1931 West | Lake St | 6,900 | 3,450 |
508 | 10/12/2006 | 3165 West | Franklin Blvd | 3,900 | 1,950 |
509 | 10/23/2006 | 1926 West | Grand Ave | 19,600 | 9,800 |
511 | 09/19/2006 | 777 West | Chicago Ave | 27,600 | 13,800 |
512 | 10/18/2006 | 1521 West | Chicago Ave | 17,100 | 8,550 |
513 | 11/13/2006 | 3914 West | Division St | 16,900 | 8,450 |
514 | 10/23/2006 | 3500 West | Grand Ave | 15,700 | 7,850 |
515 | 10/18/2006 | 3045 West | Division St | 16,600 | 8,300 |
516 | 09/21/2006 | 1925 West | Division St | 26,800 | 13,400 |
517 | 10/18/2006 | 1504 West | Augusta Blvd | 12,800 | 6,400 |
518 | 10/03/2006 | 161 East | Chicago Ave | 18,100 | 9,050 |
519 | 10/03/2006 | 303 East | Chicago Ave | 11,900 | 5,950 |
520 | 09/20/2006 | 206 West | Van Buren St | 10,500 | 5,250 |
521 | 10/05/2006 | 2415 North | Pulaski Rd | 25,000 | 12,500 |
522 | 10/23/2006 | 6445 West | Grand Ave | 14,800 | 7,400 |
523 | 08/10/2006 | 5025 West | Armitage Ave | 9,700 | 4,850 |
524 | 10/26/2006 | 2366 North | Central Ave | 20,000 | 10,000 |
525 | 08/15/2006 | 740 West | Addison St | 12,900 | 6,450 |
526 | 10/16/2006 | 662 West | Belmont Ave | 20,800 | 10,400 |
527 | 09/21/2006 | 624 West | Division St | 22,100 | 11,050 |
528 | 08/29/2006 | 250 West | 127th St | 25,700 | 12,850 |
529 | 08/29/2006 | 446 West | 119th St | 11,500 | 5,750 |
530 | 09/14/2006 | 3900 West | 31st St | 20,100 | 10,050 |
531 | 08/22/2006 | 6780 West | Higgins Ave | 17,500 | 8,750 |
532 | 09/19/2006 | 537 South | Dearborn St | 11,500 | 5,750 |
533 | 08/16/2006 | 513 South | Damen Ave | 33,600 | 16,800 |
534 | 10/19/2006 | 3515 West | Washington St | 10,500 | 5,250 |
535 | 09/14/2006 | 3252 West | 31st St | 20,600 | 10,300 |
536 | 08/16/2006 | 4247 North | Western Ave | 40,700 | 20,350 |
537 | 09/21/2006 | 230 South | La Salle St | 7,700 | 3,850 |
538 | 10/04/2006 | 210 South | Des Plaines St | 6,300 | 3,150 |
539 | 10/02/2006 | 210 South | Clinton St | 11,600 | 5,800 |
540 | 10/03/2006 | 225 South | Canal St | 12,100 | 6,050 |
541 | 09/19/2006 | 209 South | Wells St | 11,600 | 5,800 |
542 | 09/20/2006 | 210 South | Clark St | 16,500 | 8,250 |
543 | 09/20/2006 | 239 South | Dearborn St | 17,900 | 8,950 |
544 | 09/05/2006 | 400 South | Kostner Ave | 18,700 | 9,350 |
545 | 10/09/2006 | 210 South | Kedzie Ave | 15,500 | 7,750 |
546 | 09/20/2006 | 603 West | Monroe St | 13,800 | 6,900 |
547 | 08/15/2006 | 2939 West | 63rd St | 22,200 | 11,100 |
548 | 10/26/2006 | 3100 West | 59th St | 21,300 | 10,650 |
549 | 10/11/2006 | 3105 West | Garfield Blvd | 24,800 | 12,400 |
550 | 09/26/2006 | 2857 West | Pershing Rd | 7,800 | 3,900 |
551 | 09/14/2006 | 2825 West | 31st St | 17,700 | 8,850 |
552 | 10/05/2006 | 3260 West | Warren Blvd | 5,900 | 2,950 |
553 | 10/05/2006 | 3233 West | Washington St | 8,200 | 4,100 |
554 | 09/21/2006 | 3283 West | Wrightwood Ave | 10,000 | 5,000 |
555 | 11/14/2006 | 3238 West | Fullerton Ave | 33,200 | 16,600 |
556 | 08/24/2006 | 2501 West | 103rd St | 23,600 | 11,800 |
557 | 09/27/2006 | 650 West | Washington St | 19,000 | 9,500 |
558 | 08/16/2006 | 3313 West | Lawrence Ave | 21,000 | 10,500 |
559 | 10/18/2006 | 4631 West | Harrison St | 11,500 | 5,750 |
560 | 11/15/2006 | 4224 West | 31st St | 20,500 | 10,250 |
561 | 11/15/2006 | 4040 West | Ogden St | 20,500 | 10,250 |
562 | 08/16/2006 | 4047 West | Fullerton Ave | 37,900 | 18,950 |
563 | 08/10/2006 | 4301 West | Diversey Ave | 18,700 | 9,350 |
564 | 08/14/2006 | 5105 West | Addison St | 22,200 | 11,100 |
565 | 10/18/2006 | 5103 West | North Ave | 36,500 | 18,250 |
566 | 11/07/2006 | 155 West | Grand Ave | 14,200 | 7,100 |
567 | 08/23/2006 | 4521 North | Central Ave | 27,600 | 13,800 |
568 | 08/16/2006 | 4581 North | Western Ave | 38,300 | 19,150 |
569 | 08/15/2006 | 6330 West | Touhy Ave | 33,700 | 16,850 |
570 | 08/23/2006 | 5831 North | California Ave | 11,400 | 5,700 |
571 | 08/09/2006 | 3815 West | Devon Ave | 27,100 | 13,550 |
573 | 08/22/2006 | 2208 West | 111th St | 22,600 | 11,300 |
574 | 10/23/2006 | 206 South | Cicero Ave | 33,700 | 16,850 |
575 | 10/04/2006 | 135 South | Pulaski Rd | 24,200 | 12,100 |
576 | 10/02/2006 | 49 South | Jefferson St | 9,100 | 4,550 |
577 | 08/24/2006 | 909 West | Foster Ave | 20,200 | 10,100 |
578 | 08/29/2006 | 158 East | 107th St | 8,000 | 4,000 |
579 | 08/29/2006 | 350 East | 111th St | 12,200 | 6,100 |
580 | 10/16/2006 | 3743 West | Belmont Ave | 26,200 | 13,100 |
581 | 09/18/2006 | 5665 West | Bryn Mawr Ave | 8,900 | 4,450 |
582 | 08/22/2006 | 11810 South | Western Ave | 23,600 | 11,800 |
583 | 08/22/2006 | 11027 South | Pulaski Rd | 32,900 | 16,450 |
584 | 08/22/2006 | 11450 South | Kedzie Ave | 19,600 | 9,800 |
585 | 09/06/2006 | 9450 South | Jeffery Ave | 19,400 | 9,700 |
586 | 10/04/2006 | 9401 South | Cottage Grove Ave | 24,400 | 12,200 |
588 | 10/18/2006 | 8210 South | Exchange Ave | 9,700 | 4,850 |
589 | 08/15/2006 | 8220 South | Kedzie Ave | 21,300 | 10,650 |
591 | 08/15/2006 | 7825 South | Pulaski Rd | 46,600 | 23,300 |
593 | 10/18/2006 | 7845 South | Cottage Grove Ave | 27,300 | 13,650 |
594 | 10/11/2006 | 7829 South | Damen Ave | 23,700 | 11,850 |
595 | 10/11/2006 | 6750 South | Kedzie Ave | 26,000 | 13,000 |
596 | 10/23/2006 | 6210 South | Cicero Ave | 59,900 | 29,950 |
597 | 08/15/2006 | 6224 South | Pulaski Rd | 52,300 | 26,150 |
598 | 08/10/2006 | 6214 South | Kedzie Ave | 24,200 | 12,100 |
599 | 10/31/2006 | 6217 South | Ashland Ave | 36,000 | 18,000 |
600 | 09/12/2006 | 5433 South | Central Ave | 27,400 | 13,700 |
601 | 08/02/2006 | 5410 South | Cicero Ave | 71,200 | 35,600 |
602 | 08/10/2006 | 5413 South | Kedzie Ave | 24,300 | 12,150 |
603 | 08/17/2006 | 5443 South | California Ave | 18,600 | 9,300 |
604 | 10/11/2006 | 5411 South | Damen Ave | 14,000 | 7,000 |
605 | 10/11/2006 | 4647 South | Archer Ave | 33,300 | 16,650 |
606 | 08/10/2006 | 4611 South | Kedzie Ave | 29,200 | 14,600 |
607 | 08/22/2006 | 4637 South | California Ave | 20,800 | 10,400 |
608 | 08/17/2006 | 3835 South | Damen Ave | 25,800 | 12,900 |
609 | 09/12/2006 | 3030 South | Kostner Ave | 9,600 | 4,800 |
610 | 08/10/2006 | 3001 South | Kedzie Ave | 25,400 | 12,700 |
611 | 08/17/2006 | 3026 South | California Ave | 23,400 | 11,700 |
612 | 09/14/2006 | 2501 South | Hamlin Ave | 3,200 | 1,600 |
613 | 09/14/2006 | 2130 South | Marshall Blvd | 18,800 | 9,400 |
614 | 08/15/2006 | 2149 South | California Ave | 17,700 | 8,850 |
615 | 08/17/2006 | 2157 South | Damen Ave | 24,700 | 12,350 |
616 | 09/14/2006 | 1531 South | Kostner Ave | 19,500 | 9,750 |
617 | 09/12/2006 | 1539 South | Pulaski Rd | 21,700 | 10,850 |
618 | 10/10/2006 | 1142 South | Sacramento Ave | 20,000 | 10,000 |
619 | 10/09/2006 | 1820 North | Kimball Ave | 10,500 | 5,250 |
620 | 10/18/2006 | 211 South | Central Ave | 25,400 | 12,700 |
621 | 10/23/2006 | 190 South | Laramie Ave | 21,100 | 10,550 |
622 | 10/26/2006 | 857 West | Austin Ave | 24,800 | 12,400 |
623 | 08/31/2006 | 1629 North | Ashland Ave | 30,700 | 15,350 |
624 | 10/26/2006 | 2123 North | Damen Ave | 22,100 | 11,050 |
625 | 10/23/2006 | 2032 North | Milwaukee Ave | 14,600 | 7,300 |
626 | 11/01/2006 | 1640 North | Pulaski Rd | 19,300 | 9,650 |
628 | 11/13/2006 | 1646 North | Laramie Ave | 13,200 | 6,600 |
629 | 10/25/2006 | 1666 North | Narragansett Ave | 13,000 | 6,500 |
630 | 11/13/2006 | 2393 North | Harlem Ave | 22,300 | 11,150 |
631 | 10/09/2006 | 2427 North | Kedzie Ave | 17,400 | 8,700 |
632 | 11/14/2006 | 2420 North | Sacramento Ave | 16,500 | 8,250 |
633 | 08/29/2006 | 2435 North | Ashland Ave | 40,200 | 20,100 |
634 | 09/18/2006 | 2900 North | Lake Shore Inner Dr | 4,700 | 2,350 |
635 | 10/16/2006 | 2825 North | Halsted St | 19,500 | 9,750 |
636 | 10/04/2006 | 2824 North | Sheffield Ave | 10,700 | 5,350 |
638 | 10/16/2006 | 2851 North | Southport Ave | 8,600 | 4,300 |
639 | 08/29/2006 | 2855 North | Ashland Ave | 37,400 | 18,700 |
640 | 10/09/2006 | 3125 North | Kimball Ave | 20,000 | 10,000 |
641 | 10/09/2006 | 2609 North | Kimball Ave | 16,100 | 8,050 |
642 | 10/17/2006 | 2859 North | Central Park Ave | 9,000 | 4,500 |
643 | 11/20/2006 | 2827 North | Pulaski Rd | 23,900 | 11,950 |
644 | 09/06/2006 | 2830 North | Kostner Ave | 7,600 | 3,800 |
645 | 10/11/2006 | 2845 North | Cicero Ave | 44,000 | 22,000 |
646 | 10/23/2006 | 2836 North | Laramie Ave | 15,500 | 7,750 |
647 | 10/25/2006 | 3280 North | Cumberland Ave | 37,700 | 18,850 |
648 | 11/14/2006 | 3649 North | Cumberland Ave | 39,400 | 19,700 |
649 | 10/25/2006 | 3250 North | Harlem Ave | 28,900 | 14,450 |
650 | 10/25/2006 | 7825 West | Forest Preserve Ave | 16,000 | 8,000 |
651 | 10/25/2006 | 3647 North | Oak Park Ave | 18,800 | 9,400 |
652 | 11/13/2006 | 3658 North | Central Ave | 23,800 | 11,900 |
653 | 10/23/2006 | 3620 North | Laramie Ave | 16,700 | 8,350 |
654 | 10/11/2006 | 3255 North | Cicero Ave | 40,600 | 20,300 |
655 | 10/11/2006 | 3647 North | Cicero Ave | 38,500 | 19,250 |
656 | 08/23/2006 | 3628 North | Milwaukee Ave | 14,400 | 7,200 |
657 | 12/11/2006 | 3235 North | Kedzie Ave | 15,000 | 7,500 |
658 | 09/18/2006 | 3249 North | Elston Ave | 14,800 | 7,400 |
659 | 10/09/2006 | 3242 North | California Ave | 11,900 | 5,950 |
660 | 10/24/2006 | 3260 North | Western Ave (over pass) | 32,100 | 16,050 |
661 | 08/16/2006 | 3220 North | Damen Ave | 17,000 | 8,500 |
662 | 10/04/2006 | 3228 North | Sheffield Ave | 9,500 | 4,750 |
663 | 10/16/2006 | 3232 North | Halsted St | 22,100 | 11,050 |
664 | 09/18/2006 | 3620 North | Lake Shore Inner Dr | 18,900 | 9,450 |
665 | 10/16/2006 | 3636 North | Broadway | 10,100 | 5,050 |
666 | 10/18/2006 | 3654 North | Halsted St | 16,100 | 8,050 |
667 | 07/26/2006 | 3733 North | Clark St | 12,600 | 6,300 |
668 | 08/29/2006 | 3625 North | Ashland Ave | 32,100 | 16,050 |
669 | 10/10/2006 | 4065 North | Narragansett Ave | 26,800 | 13,400 |
670 | 08/09/2006 | 4055 North | Cicero Ave | 31,500 | 15,750 |
671 | 09/18/2006 | 4059 North | Pulaski Rd | 21,100 | 10,550 |
672 | 08/10/2006 | 4050 North | Elston Ave | 20,200 | 10,100 |
673 | 08/16/2006 | 4453 North | Damen Ave | 13,000 | 6,500 |
674 | 08/29/2006 | 4034 North | Ashland Ave | 33,400 | 16,700 |
675 | 10/04/2006 | 4472 North | Clarendon St | 4,700 | 2,350 |
676 | 08/29/2006 | 4421 North | Sheridan Rd | 7,500 | 3,750 |
677 | 10/05/2006 | 4445 North | Pulaski Rd | 27,300 | 13,650 |
678 | 01/09/2007 | 4810 North | Milwaukee Ave | 27,600 | 13,800 |
679 | 08/22/2006 | 4853 North | Nagle Ave | 22,700 | 11,350 |
680 | 08/22/2006 | 5659 North | Northwest Hwy | 9,900 | 4,950 |
682 | 08/10/2006 | 5217 North | Elston Ave | 18,200 | 9,100 |
683 | 08/24/2006 | 5237 North | Kedzie Ave | 14,700 | 7,350 |
684 | 08/15/2006 | 5232 North | Western Ave | 34,600 | 17,300 |
685 | 08/24/2006 | 5243 North | Broadway | 25,000 | 12,500 |
686 | 08/24/2006 | 5725 North | Broadway | 25,900 | 12,950 |
687 | 08/22/2006 | 6071 North | Western Ave | 34,600 | 17,300 |
688 | 09/18/2006 | 7254 North | Rogers Ave | 7,600 | 3,800 |
689 | 08/23/2006 | 7477 North | Clark St | 19,900 | 9,950 |
690 | 08/15/2006 | 6082 North | Lincoln Ave | 35,600 | 17,800 |
691 | 08/15/2006 | 6067 North | Kimball Ave | 15,600 | 7,800 |
693 | 08/15/2006 | 6445 North | Central Ave | 17,500 | 8,750 |
694 | 08/16/2006 | 6516 North | Harlem Ave | 31,800 | 15,900 |
695 | 10/23/2006 | 324 South | Racine Ave | 12,500 | 6,250 |
696 | 09/19/2006 | 220 South | Wabash Ave | 10,900 | 5,450 |
697 | 09/26/2006 | 200 South | Michigan Ave | 39,000 | 19,500 |
698 | 11/07/2006 | 249 South | Columbus Dr | 30,100 | 15,050 |
699 | 10/12/2006 | 114 North | Hamlin Ave | 15,500 | 7,750 |
700 | 10/04/2006 | 323 North | Pulaski Rd | 24,800 | 12,400 |
701 | 11/13/2006 | 267 North | Central Park Ave | 8,800 | 4,400 |
702 | 09/27/2006 | 243 North | Homan Ave | 12,600 | 6,300 |
703 | 10/09/2006 | 222 North | Kedzie Ave | 14,500 | 7,250 |
704 | 10/24/2006 | 220 North | Western Ave | 34,400 | 17,200 |
705 | 08/16/2006 | 209 North | Damen Ave | 20,300 | 10,150 |
706 | 10/02/2006 | 210 North | Halsted St | 20,300 | 10,150 |
708 | 10/24/2006 | 549 North | Milwaukee Ave | 11,100 | 5,550 |
709 | 09/19/2006 | 640 North | Wabash Ave | 7,400 | 3,700 |
710 | 09/18/2006 | 840 North | Halsted St | 23,100 | 11,550 |
711 | 09/27/2006 | 1240 North | Homan Ave | 8,900 | 4,450 |
712 | 09/01/2006 | 1231 North | Western Ave | 38,100 | 19,050 |
714 | 10/23/2006 | 1230 North | Clybourn Ave | 15,000 | 7,500 |
715 | 09/20/2006 | 835 North | Clark St | 16,500 | 8,250 |
716 | 10/12/2006 | 1667 North | Wells St | 10,700 | 5,350 |
717 | 10/04/2006 | 1665 North | Sedgwick St | 5,700 | 2,850 |
718 | 08/24/2006 | 11021 South | Ashland Ave | 2,000 | 1,000 |
719 | 08/22/2006 | 5205 North | Nagle Ave | 18,300 | 9,150 |
720 | 10/10/2006 | 6221 West | Gunnison St | 12,300 | 6,150 |
721 | 10/23/2006 | 6135 West | Grand Ave | 22,800 | 11,400 |
722 | 08/17/2006 | 6325 West | Fullerton Ave | 30,300 | 15,150 |
723 | 10/16/2006 | 6257 West | Belmont Ave | 24,400 | 12,200 |
724 | 11/07/2006 | 6050 West | Addison St | 24,200 | 12,100 |
725 | 08/24/2006 | 6204 West | Irving Park Rd | 31,000 | 15,500 |
726 | 08/10/2006 | 6656 West | Diversey Ave | 23,900 | 11,950 |
727 | 10/25/2006 | 1928 North | Oak Park Ave | 13,000 | 6,500 |
728 | 12/20/2006 | 7168 West | North Ave | 36,000 | 18,000 |
729 | 10/18/2006 | 6570 West | North Ave | 41,700 | 20,850 |
730 | 11/14/2006 | 1300 West | Washington St | 5,900 | 2,950 |
731 | 10/05/2006 | 1234 West | Randolph St | 6,000 | 3,000 |
733 | 01/09/2007 | 645 North | State St | 23,100 | 11,550 |
734 | 09/21/2006 | 640 North | La Salle St | 39,000 | 19,500 |
735 | 09/20/2006 | 635 North | Dearborn St | 16,400 | 8,200 |
736 | 09/28/2006 | 641 North | Clark St | 21,200 | 10,600 |
737 | 09/20/2006 | 633 North | Wells St | 9,400 | 4,700 |
738 | 08/15/2006 | 6805 North | Northwest Hwy | 16,100 | 8,050 |
740 | 09/12/2006 | 4306 West | 26th St | 8,400 | 4,200 |
741 | 11/08/2006 | 4212 West | Armitage Ave | 17,700 | 8,850 |
742 | 09/21/2006 | 180 North | La Salle St | 22,800 | 11,400 |
743 | 11/07/2006 | 180 North | Wabash Ave | 8,200 | 4,100 |
744 | 09/26/2006 | 163 North | Dearborn St | 14,100 | 7,050 |
745 | 09/28/2006 | 175 North | Clark St | 14,500 | 7,250 |
746 | 09/19/2006 | 176 North | Wells St | 10,600 | 5,300 |
747 | 11/07/2006 | 162 North | Franklin St | 16,800 | 8,400 |
748 | 10/02/2006 | 156 North | Jefferson St | 8,300 | 4,150 |
749 | 10/02/2006 | 186 North | Des Plaines St | 7,300 | 3,650 |
750 | 10/18/2006 | 3506 East | 95Th St | 14,500 | 7,250 |
751 | 10/18/2006 | 11233 South | Avenue O | 16,000 | 8,000 |
752 | 10/04/2006 | 10347 South | Cottage Grove Ave | 13,700 | 6,850 |
753 | 10/04/2006 | 9761 South | Cottage Grove Ave | 14,000 | 7,000 |
755 | 10/18/2006 | 9233 South | Commercial Ave | 14,500 | 7,250 |
757 | 12/19/2006 | 7150 South | Cottage Grove Ave | 21,400 | 10,700 |
758 | 09/12/2006 | 6336 South | Harlem Ave | 58,100 | 29,050 |
759 | 09/12/2006 | 6335 South | Central Ave | 15,700 | 7,850 |
760 | 10/11/2006 | 6312 South | California Ave | 16,600 | 8,300 |
762 | 09/14/2006 | 3121 South | Pulaski Rd | 29,500 | 14,750 |
763 | 08/17/2006 | 2235 South | Damen Ave | 24,000 | 12,000 |
764 | 09/14/2006 | 1659 South | Homan Ave | 5,100 | 2,550 |
765 | 10/18/2006 | 323 South | Central Ave | 26,600 | 13,300 |
766 | 10/23/2006 | 1548 North | Laramie Ave | 18,400 | 9,200 |
768 | 10/26/2006 | 2300 North | Racine Ave | 13,000 | 6,500 |
769 | 10/09/2006 | 2318 North | Sacramento Ave | 18,400 | 9,200 |
770 | 10/25/2006 | 2761 North | Narragansett Ave | 23,700 | 11,850 |
771 | 11/14/2006 | 2739 North | Pulaski Rd | 26,500 | 13,250 |
772 | 11/09/2006 | 2708 North | Halsted St | 14,500 | 7,250 |
773 | 08/22/2006 | 3152 North | Milwaukee Ave | 16,800 | 8,400 |
774 | 10/16/2006 | 3531 North | Broadway | 14,700 | 7,350 |
775 | 09/18/2006 | 4710 North | Kedzie Ave | 15,500 | 7,750 |
776 | 08/17/2006 | 4762 North | East River Rd | 14,000 | 7,000 |
777 | 08/16/2006 | 5653 North | East River Rd | 25,300 | 12,650 |
778 | 08/08/2006 | 5800 North | Cicero Ave | 22,700 | 11,350 |
779 | 08/16/2006 | 5543 North | Lincoln Ave | 24,400 | 12,200 |
780 | 08/25/2006 | 6719 North | Ashland Ave | 4,800 | 2,400 |
781 | 11/14/2006 | 7127 North | Leigh Ave | 8,600 | 4,300 |
782 | 08/15/2006 | 6333 North | Milwaukee Ave | 26,800 | 13,400 |
784 | 10/18/2006 | 3150 South | State St | 21,800 | 10,900 |
786 | 10/10/2006 | 715 South | Kedzie Ave | 16,300 | 8,150 |
787 | 10/12/2006 | 750 North | Central Park Ave | 10,300 | 5,150 |
788 | 10/04/2006 | 700 South | Pulaski Rd | 23,700 | 11,850 |
789 | 09/27/2006 | 338 South | Homan Ave | 15,000 | 7,500 |
790 | 11/01/2006 | 194 North | Damen Ave | 18,800 | 9,400 |
791 | 10/02/2006 | 465 North | Desplaines St | 4,500 | 2,250 |
792 | 10/09/2006 | 667 North | Sacramento Ave | 21,400 | 10,700 |
793 | 10/02/2006 | 1526 North | Western Ave | 39,400 | 19,700 |
794 | 10/30/2006 | 1136 North | Milwaukee Ave | 14,100 | 7,050 |
795 | 10/31/2006 | 745 North | Fairbanks Ct | 10,700 | 5,350 |
796 | 09/27/2006 | 1111 North | Clark St | 14,100 | 7,050 |
798 | 08/15/2006 | 4732 South | Pulaski Rd | 45,700 | 22,850 |
799 | 08/17/2006 | 3110 South | California Ave | 30,800 | 15,400 |
801 | 10/31/2006 | 890 West | Lawrence Ave | 14,500 | 7,250 |
802 | 08/24/2006 | 11159 South | Longwood Dr | 5,400 | 2,700 |
803 | 08/29/2006 | 1527 West | Irving Park Rd | 29,800 | 14,900 |
804 | 09/27/2006 | 22 West | Congress Pkwy | 62,700 | 31,350 |
805 | 09/21/2006 | 20 West | Division St | 18,700 | 9,350 |
806 | 09/21/2006 | 1 West | Grand Ave | 18,800 | 9,400 |
807 | 08/29/2006 | 51 East | 119th St | 6,900 | 3,450 |
808 | 09/21/2006 | 22 East | Division St | 8,400 | 4,200 |
809 | 11/08/2006 | 2250 East | 130th St | 23,000 | 11,500 |
810 | 09/20/2006 | 408 South | Clark St | 13,000 | 6,500 |
811 | 10/10/2006 | 322 South | California Ave | 13,100 | 6,550 |
812 | 08/24/2006 | 1345 West | 107th St | 7,900 | 3,950 |
813 | 10/31/2006 | 1920 West | 115th St | 6,300 | 3,150 |
814 | 08/29/2006 | 2600 East | 122nd St | 4,200 | 2,100 |
815 | 08/24/2006 | 2350 West | 119th St | 19,900 | 9,950 |
816 | 08/22/2006 | 3254 West | 115th St | 15,500 | 7,750 |
817 | 10/11/2006 | 6431 West | 63rd St | 18,200 | 9,100 |
818 | 08/15/2006 | 4019 West | 59th St | 20,200 | 10,100 |
819 | 09/26/2006 | 2641 West | Pershing Rd | 11,000 | 5,500 |
820 | 11/16/2006 | 4418 West | 26th St | 14,800 | 7,400 |
821 | 11/14/2006 | 4042 West | Cermak Rd | 23,200 | 11,600 |
822 | 08/09/2006 | 2605 West | Armitage Ave | 16,800 | 8,400 |
824 | 08/29/2006 | 1625 West | Irving Park Rd | 33,000 | 16,500 |
825 | 08/30/2006 | 2432 West | Irving Park Rd | 42,100 | 21,050 |
826 | 08/10/2006 | 4825 West | Lawrence Ave | 28,900 | 14,450 |
827 | 08/16/2006 | 9463 West | Higgins Rd | 32,100 | 16,050 |
829 | 08/15/2006 | 3447 West | Foster Ave | 27,500 | 13,750 |
830 | 08/09/2006 | 6080 North | Caldwell Ave | 27,100 | 13,550 |
831 | 10/18/2006 | 45 West | 31st St | 14,100 | 7,050 |
832 | 10/13/2006 | 4035 West | Madison St | 21,200 | 10,600 |
833 | 10/18/2006 | 2845 West | Division St | 18,200 | 9,100 |
834 | 10/18/2006 | 2458 West | Augusta Blvd | 11,400 | 5,700 |
836 | 11/07/2006 | 10 East | Grand Ave | 20,100 | 10,050 |
837 | 10/09/2006 | 112 North | California Ave | 5,100 | 2,550 |
838 | 10/23/2006 | 25 North | Cicero Ave | 37,000 | 18,500 |
839 | 09/21/2006 | 173 West | Ohio St | 37,700 | 18,850 |
840 | 08/29/2006 | 40 West | 115th St | 11,700 | 5,850 |
841 | 11/02/2006 | 2430 West | Ogden Ave | 29,900 | 14,950 |
842 | 08/14/2006 | 2458 West | Addison St | 27,000 | 13,500 |
843 | 08/09/2006 | 2324 West | Armitage Ave | 16,800 | 8,400 |
844 | 08/17/2006 | 2830 West | 87th St | 29,400 | 14,700 |
845 | 08/17/2006 | 2950 West | 83rd St | 12,200 | 6,100 |
846 | 11/14/2006 | 2249 West | Montrose Ave | 16,400 | 8,200 |
847 | 10/12/2006 | 1420 West | Madison St | 12,400 | 6,200 |
848 | 08/14/2006 | 5434 West | Addison Ave | 22,900 | 11,450 |
849 | 08/14/2006 | 7121 West | Addison Ave | 20,700 | 10,350 |
850 | 10/25/2006 | 3521 North | Austin Ave | 21,700 | 10,850 |
851 | 10/25/2006 | 2653 North | Austin Ave | 22,200 | 11,100 |
852 | 08/23/2006 | 4308 North | Austin Ave | 19,500 | 9,750 |
853 | 10/26/2006 | 1728 North | Austin Ave | 20,300 | 10,150 |
854 | 10/16/2006 | 5532 West | Belmont Ave | 23,100 | 11,550 |
855 | 11/14/2006 | 7368 West | Belmont Ave | 24,100 | 12,050 |
856 | 10/16/2006 | 6845 West | Belmont Ave | 24,200 | 12,100 |
857 | 09/19/2006 | 10 South | Canal St | 12,100 | 6,050 |
858 | 08/31/2006 | 5947 North | Canfield Ave | 16,700 | 8,350 |
859 | 10/26/2006 | 3501 North | Central Ave | 27,200 | 13,600 |
860 | 08/22/2006 | 5601 North | Central Ave | 18,800 | 9,400 |
861 | 10/26/2006 | 2459 North | Central Ave | 25,000 | 12,500 |
862 | 08/23/2006 | 4256 North | Central Ave | 24,900 | 12,450 |
863 | 10/26/2006 | 1710 North | Central Ave | 20,400 | 10,200 |
864 | 08/08/2006 | 5050 North | Cicero Ave | 25,900 | 12,950 |
865 | 10/25/2006 | 3450 North | Cumberland Ave | 33,000 | 16,500 |
866 | 08/17/2006 | 5320 North | Cumberland Ave | 40,600 | 20,300 |
867 | 08/17/2006 | 5850 North | Cumberland Ave | 49,400 | 24,700 |
868 | 08/17/2006 | 4151 North | Cumberland Ave | 43,900 | 21,950 |
869 | 08/15/2006 | 7729 West | Devon Ave | 19,300 | 9,650 |
870 | 08/15/2006 | 6193 West | Devon Ave | 33,300 | 16,650 |
871 | 08/16/2006 | 6891 West | Diversey Ave | 16,600 | 8,300 |
872 | 08/10/2006 | 6041 West | Diversey Ave | 21,600 | 10,800 |
873 | 08/16/2006 | 5980 North | East River Rd | 19,300 | 9,650 |
874 | 08/16/2006 | 5140 North | East River Rd | 22,500 | 11,250 |
875 | 08/10/2006 | 5110 North | Elston Ave | 15,900 | 7,950 |
876 | 10/25/2006 | 8500 West | Forest Preserve Ave | 10,400 | 5,200 |
877 | 08/23/2006 | 6916 West | Forest Preserve Ave | 23,900 | 11,950 |
878 | 08/22/2006 | 6747 West | Foster Ave | 14,300 | 7,150 |
879 | 10/11/2006 | 6058 West | Foster Ave | 17,300 | 8,650 |
880 | 08/10/2006 | 5313 West | Foster Ave | 24,600 | 12,300 |
881 | 08/17/2006 | 5835 West | Fullerton Ave | 37,100 | 18,550 |
882 | 11/15/2006 | 7102 West | Grand Ave | 19,200 | 9,600 |
884 | 12/11/2006 | 2920 North | Harlem Ave | 23,200 | 11,600 |
885 | 10/25/2006 | 3731 North | Harlem Ave | 32,100 | 16,050 |
886 | 10/26/2006 | 1837 North | Harlem Ave | 26,000 | 13,000 |
887 | 08/15/2006 | 5898 North | Harlem Ave | 32,700 | 16,350 |
888 | 08/15/2006 | 7317 North | Harlem Ave | 26,100 | 13,050 |
889 | 08/22/2006 | 5731 West | Higgins Ave | 10,200 | 5,100 |
891 | 08/22/2006 | 7455 West | Higgins Ave | 14,100 | 7,050 |
892 | 08/24/2006 | 5842 West | Irving Park Rd | 35,300 | 17,650 |
893 | 08/24/2006 | 6911 West | Irving Park Rd | 28,600 | 14,300 |
894 | 10/23/2006 | 3400 North | Laramie Ave | 15,900 | 7,950 |
896 | 10/23/2006 | 2426 North | Laramie Ave | 15,900 | 7,950 |
897 | 10/24/2006 | 1748 North | Laramie Ave | 13,500 | 6,750 |
898 | 08/24/2006 | 5439 West | Lawrence Ave | 20,800 | 10,400 |
900 | 10/17/2006 | 5913 North | Lincoln Ave | 31,600 | 15,800 |
901 | 08/23/2006 | 6534 West | Montrose Ave | 25,800 | 12,900 |
903 | 10/25/2006 | 3725 North | Narragansett Ave | 24,200 | 12,100 |
904 | 10/26/2006 | 2890 North | Narragansett Ave | 24,900 | 12,450 |
905 | 10/25/2006 | 2228 North | Narragansett Ave | 16,200 | 8,100 |
906 | 08/22/2006 | 4459 North | Narragansett Ave | 20,700 | 10,350 |
907 | 10/25/2006 | 3130 North | Oak Park Ave | 17,100 | 8,550 |
908 | 09/21/2006 | 4850 West | Peterson Ave | 42,800 | 21,400 |
910 | 08/15/2006 | 7252 West | Touhy Ave | 25,200 | 12,600 |
911 | 09/19/2006 | 71 South | Wacker Dr | 21,200 | 10,600 |
912 | 08/16/2006 | 5749 North | Western Ave | 34,100 | 17,050 |
913 | 08/14/2006 | 3023 West | Addison Ave | 29,800 | 14,900 |
914 | 08/14/2006 | 4550 West | Addison Ave | 23,600 | 11,800 |
915 | 08/09/2006 | 3636 West | Armitage Ave | 18,000 | 9,000 |
916 | 08/09/2006 | 3308 West | Armitage Ave | 18,200 | 9,100 |
917 | 08/10/2006 | 4459 West | Armitage Ave | 17,200 | 8,600 |
918 | 10/16/2006 | 3317 West | Belmont Ave | 32,700 | 16,350 |
919 | 10/16/2006 | 3524 West | Belmont Ave | 27,500 | 13,750 |
920 | 10/16/2006 | 4621 West | Belmont Ave | 25,300 | 12,650 |
921 | 10/16/2006 | 2737 West | Belmont Ave | 23,800 | 11,900 |
922 | 12/11/2006 | 3945 West | Belmont Ave | 16,600 | 8,300 |
923 | 08/15/2006 | 5417 North | California Ave | 12,800 | 6,400 |
924 | 11/16/2006 | 3765 North | California Ave | 13,500 | 6,750 |
925 | 10/09/2006 | 2027 North | California Ave | 16,100 | 8,050 |
926 | 08/22/2006 | 7420 North | California Ave | 10,400 | 5,200 |
927 | 11/14/2006 | 1751 North | Central Park Ave | 10,300 | 5,150 |
928 | 08/10/2006 | 3120 West | Diversey Ave | 18,500 | 9,250 |
929 | 08/10/2006 | 3809 West | Diversey Ave | 17,700 | 8,850 |
930 | 08/10/2006 | 4632 West | Diversey Ave | 23,000 | 11,500 |
931 | 08/15/2006 | 2671 West | Foster Ave | 23,700 | 11,850 |
932 | 08/17/2006 | 3724 West | Fullerton Ave | 34,400 | 17,200 |
933 | 08/17/2006 | 4710 West | Fullerton Ave | 37,400 | 18,700 |
934 | 11/14/2006 | 3130 West | Fullerton Ave | 30,400 | 15,200 |
935 | 08/24/2006 | 4240 West | Irving Park Rd | 37,100 | 18,550 |
936 | 10/16/2006 | 3056 West | Irving Park Rd | 47,300 | 23,650 |
937 | 08/02/2006 | 3842 West | Irving Park Rd | 46,500 | 23,250 |
938 | 08/16/2006 | 4875 North | Kedzie Ave | 14,300 | 7,150 |
939 | 08/15/2006 | 5437 North | Kimball Ave | 13,900 | 6,950 |
940 | 10/09/2006 | 3630 North | Kimball Ave | 19,600 | 9,800 |
941 | 10/09/2006 | 2231 North | Kimball Ave | 12,200 | 6,100 |
942 | 09/06/2006 | 2230 North | Kostner Ave | 12,500 | 6,250 |
943 | 10/31/2006 | 2925 West | Lawrence Ave | 23,400 | 11,700 |
944 | 08/10/2006 | 4245 West | Lawrence Ave | 22,600 | 11,300 |
945 | 08/23/2006 | 2761 North | Milwaukee Ave | 18,100 | 9,050 |
946 | 08/23/2006 | 3758 West | Montrose Ave | 22,000 | 11,000 |
947 | 10/17/2006 | 2932 West | North Ave | 33,900 | 16,950 |
948 | 10/18/2006 | 3741 West | North Ave | 37,300 | 18,650 |
949 | 10/16/2006 | 3335 West | North Ave | 38,600 | 19,300 |
950 | 10/05/2006 | 2032 North | Pulaski Rd | 21,300 | 10,650 |
951 | 10/05/2006 | 3723 North | Pulaski Rd | 22,700 | 11,350 |
952 | 10/19/2006 | 3915 West | Roosevelt Rd | 23,900 | 11,950 |
953 | 08/15/2006 | 1256 West | Addison Ave | 19,800 | 9,900 |
954 | 08/15/2006 | 901 West | Addison Ave | 16,400 | 8,200 |
955 | 11/07/2006 | 2257 West | Addison Ave | 21,800 | 10,900 |
956 | 08/09/2006 | 1851 West | Armitage Ave | 21,000 | 10,500 |
957 | 11/16/2006 | 612 West | Armitage Ave | 13,800 | 6,900 |
958 | 10/11/2006 | 935 West | Armitage Ave | 13,100 | 6,550 |
959 | 08/29/2006 | 3524 North | Ashland Ave | 33,800 | 16,900 |
960 | 08/22/2006 | 5116 North | Ashland Ave | 26,700 | 13,350 |
961 | 10/16/2006 | 1525 West | Belmont Ave | 19,200 | 9,600 |
962 | 10/16/2006 | 1111 West | Belmont Ave | 20,900 | 10,450 |
963 | 10/16/2006 | 2237 West | Belmont Ave | 18,700 | 9,350 |
964 | 10/16/2006 | 3120 North | Broadway | 11,700 | 5,850 |
966 | 08/29/2006 | 4034 North | Broadway | 13,000 | 6,500 |
967 | 08/24/2006 | 5051 North | Broadway | 25,000 | 12,500 |
968 | 09/18/2006 | 1103 West | Bryn Mawr Ave | 17,800 | 8,900 |
969 | 08/24/2006 | 6137 North | Clark St | 32,100 | 16,050 |
970 | 10/23/2006 | 2620 North | Clybourn Ave | 17,300 | 8,650 |
971 | 08/16/2006 | 3137 North | Damen Ave | 19,200 | 9,600 |
972 | 08/29/2006 | 4113 North | Damen Ave | 12,500 | 6,250 |
973 | 08/16/2006 | 4855 North | Damen Ave | 12,100 | 6,050 |
974 | 08/16/2006 | 1804 North | Damen Ave | 16,700 | 8,350 |
975 | 08/10/2006 | 1614 West | Diversey Ave | 22,400 | 11,200 |
976 | 08/24/2006 | 1059 West | Foster Ave | 24,200 | 12,100 |
978 | 08/16/2006 | 1434 West | Fullerton Ave | 24,400 | 12,200 |
979 | 10/16/2006 | 2034 North | Halsted St | 18,700 | 9,350 |
980 | 08/31/2006 | 1140 West | Irving Park Rd | 26,200 | 13,100 |
981 | 08/24/2006 | 2032 West | Irving Park Rd | 41,200 | 20,600 |
982 | 10/06/2006 | 2665 North | Lakeview Ave | 6,800 | 3,400 |
983 | 11/07/2006 | 1350 West | Lawrence Ave | 20,700 | 10,350 |
984 | 10/31/2006 | 1058 West | Lawrence Ave | 15,800 | 7,900 |
985 | 08/23/2006 | 2315 West | Lawrence Ave | 26,700 | 13,350 |
986 | 08/29/2006 | 2136 North | Lincoln Ave | 14,400 | 7,200 |
987 | 09/18/2006 | 4322 North | Lincoln Ave | 14,100 | 7,050 |
988 | 09/18/2006 | 4900 North | Marine Dr | 6,500 | 3,250 |
989 | 10/23/2006 | 1640 North | Milwaukee Ave | 12,800 | 6,400 |
990 | 10/31/2006 | 1758 West | Montrose Ave | 16,800 | 8,400 |
991 | 10/16/2006 | 929 West | North Ave | 28,000 | 14,000 |
992 | 10/26/2006 | 3324 North | Racine Ave | 8,900 | 4,450 |
993 | 11/16/2006 | 2519 North | Racine Ave | 11,300 | 5,650 |
994 | 10/17/2006 | 5816 North | Ridge Ave | 43,100 | 21,550 |
995 | 08/24/2006 | 6629 North | Sheridan Rd | 41,200 | 20,600 |
996 | 10/11/2006 | 4926 North | Sheridan Rd | 8,800 | 4,400 |
997 | 10/17/2006 | 2228 North | Southport Ave | 8,700 | 4,350 |
998 | 08/31/2006 | 3643 North | Western Ave | 45,300 | 22,650 |
999 | 08/31/2006 | 2160 North | Western Ave | 39,200 | 19,600 |
1000 | 08/15/2006 | 5017 North | Western Ave | 33,100 | 16,550 |
1001 | 09/28/2006 | 1768 North | Western Ave | 40,000 | 20,000 |
1002 | 08/31/2006 | 901 South | Ashland Ave | 42,500 | 21,250 |
1003 | 10/18/2006 | 5937 West | Augusta Blvd | 8,600 | 4,300 |
1004 | 10/26/2006 | 1031 South | Austin Ave | 26,100 | 13,050 |
1005 | 10/26/2006 | 148 North | Austin Ave | 31,500 | 15,750 |
1006 | 10/18/2006 | 643 North | Central Ave | 24,800 | 12,400 |
1007 | 10/12/2006 | 725 South | Central Park Ave | 10,700 | 5,350 |
1008 | 10/26/2006 | 815 South | Cicero Ave | 35,200 | 17,600 |
1009 | 10/05/2006 | 2532 West | Washington St | 7,000 | 3,500 |
1010 | 09/26/2006 | 220 West | Washington St | 14,600 | 7,300 |
1011 | 09/19/2006 | 855 West | Washington St | 9,500 | 4,750 |
1012 | 11/15/2006 | 3935 West | Washington St | 16,300 | 8,150 |
1013 | 09/19/2006 | 1350 North | Wells St | 17,700 | 8,850 |
1014 | 09/19/2006 | 516 North | Wells St | 16,300 | 8,150 |
1015 | 09/19/2006 | 15 South | Wells St | 9,900 | 4,950 |
1017 | 10/11/2006 | 1023 North | Western Ave | 36,600 | 18,300 |
1018 | 10/05/2006 | 652 North | Western Ave | 32,400 | 16,200 |
1019 | 10/24/2006 | 350 South | Western Ave | 33,900 | 16,950 |
1020 | 10/16/2006 | 1314 West | 18th St | 9,500 | 4,750 |
1021 | 09/14/2006 | 3734 West | 26th St | 18,400 | 9,200 |
1022 | 09/12/2006 | 4344 West | 26th St | 17,300 | 8,650 |
1023 | 08/16/2006 | 891 South | Damen Ave | 31,400 | 15,700 |
1024 | 10/18/2006 | 4435 West | Division St | 17,400 | 8,700 |
1025 | 10/18/2006 | 5238 West | Division St | 18,200 | 9,100 |
1026 | 10/25/2006 | 700 South | Halsted St | 25,300 | 12,650 |
1027 | 11/15/2006 | 5212 West | Harrison St | 6,500 | 3,250 |
1028 | 09/06/2006 | 1533 North | Kostner Ave | 10,600 | 5,300 |
1029 | 09/05/2006 | 750 South | Kostner Ave | 17,500 | 8,750 |
1031 | 09/05/2006 | 250 North | Kostner Ave | 5,700 | 2,850 |
1032 | 10/19/2006 | 5124 West | Lake St | 11,400 | 5,700 |
1033 | 10/23/2006 | 850 South | Laramie Ave | 18,800 | 9,400 |
1034 | 10/23/2006 | 511 North | Laramie Ave | 20,600 | 10,300 |
1035 | 12/13/2006 | 5937 West | Madison St | 13,400 | 6,700 |
1036 | 10/12/2006 | 4640 West | Madison St | 24,700 | 12,350 |
1037 | 09/20/2006 | 803 South | Racine Ave | 14,400 | 7,200 |
1038 | 10/19/2006 | 5253 West | Roosevelt Rd | 21,700 | 10,850 |
1039 | 10/19/2006 | 3300 West | Roosevelt Rd | 20,300 | 10,150 |
1041 | 10/17/2006 | 250 East | 26th St | 8,400 | 4,200 |
1042 | 10/19/2006 | 310 West | 31st St | 14,300 | 7,150 |
1043 | 10/18/2006 | 52 East | 31st St | 11,700 | 5,850 |
1044 | 10/19/2006 | 452 West | 47th St | 19,800 | 9,900 |
1045 | 10/19/2006 | 316 West | 51st St | 14,400 | 7,200 |
1046 | 09/20/2006 | 335 West | 59th St | 16,800 | 8,400 |
1047 | 09/20/2006 | 344 West | 63rd St | 10,800 | 5,400 |
1048 | 09/20/2006 | 253 East | 63rd St | 17,900 | 8,950 |
1049 | 10/05/2006 | 1233 West | Adams St | 3,800 | 1,900 |
1050 | 09/20/2006 | 555 West | Adams St | 11,700 | 5,850 |
1051 | 09/20/2006 | 222 West | Adams St | 16,400 | 8,200 |
1052 | 09/19/2006 | 1020 West | Adams St | 5,100 | 2,550 |
1053 | 10/19/2006 | 2224 South | Archer Ave | 15,300 | 7,650 |
1054 | 10/26/2006 | 755 North | Ashland Ave | 30,500 | 15,250 |
1055 | 08/31/2006 | 1345 North | Ashland Ave | 35,000 | 17,500 |
1056 | 08/31/2006 | 320 South | Ashland Ave | 35,700 | 17,850 |
1057 | 10/18/2006 | 3654 West | Augusta Blvd | 11,100 | 5,550 |
1058 | 10/18/2006 | 1824 West | Augusta Blvd | 18,900 | 9,450 |
1059 | 10/18/2006 | 3049 West | Augusta Blvd | 8,500 | 4,250 |
1060 | 01/24/2007 | 165 North | Canal St | 10,200 | 5,100 |
1061 | 11/13/2006 | 536 North | Central Park Ave | 7,600 | 3,800 |
1062 | 10/12/2006 | 64 North | Central Park Ave | 12,500 | 6,250 |
1063 | 10/17/2006 | 303 East | Cermak Rd | 25,700 | 12,850 |
1065 | 11/14/2006 | 3652 West | Chicago Ave | 20,000 | 10,000 |
1066 | 10/18/2006 | 1020 West | Chicago Ave | 25,500 | 12,750 |
1067 | 10/18/2006 | 2650 West | Chicago Ave | 18,800 | 9,400 |
1068 | 09/27/2006 | 406 North | Clark St | 20,700 | 10,350 |
1069 | 09/20/2006 | 670 South | Clark St | 20,400 | 10,200 |
1070 | 09/27/2006 | 16 South | Clark St | 15,500 | 7,750 |
1071 | 09/27/2006 | 613 North | Clark St | 17,300 | 8,650 |
1072 | 09/21/2006 | 1101 South | Clark St | 25,800 | 12,900 |
1074 | 01/30/2007 | 168 North | Clinton St | 6,900 | 3,450 |
1075 | 10/02/2006 | 101 South | Clinton St | 11,500 | 5,750 |
1077 | 09/19/2006 | 843 South | Columbus Dr | 37,000 | 18,500 |
1078 | 09/27/2006 | 85 West | Congress Pkwy | 72,400 | 36,200 |
1079 | 02/21/2007 | 40 East | Congress Pkwy | 40,700 | 20,350 |
1080 | 08/16/2006 | 730 North | Damen Ave | 15,600 | 7,800 |
Launch and run the SAS program and then review the resulting output to convince yourself that the data has been formatted and labeled as you expect. Except for titles, you can also add a footnote to the output using a footnote statement. But unlike using title and footnote statements with other SAS steps, both statements have to be placed either before the PROC SQL statement or between the PROC SQL statement and the SELECT statement.
One more thing we will talk about in this section is the CASE operator, which just follows the SELECT clause to create new columns conditionally. You must remember that this applies only to IF-THEN-ELSE statements that are available in the DATA step. In PROC SQL, the CASE operator can perform the equivalent functions. First, let’s look at the syntax for the CASE construct.
CASE
WHEN when-condition THEN result-expression
<… WHEN when-condition THEN
result-expression>
<ELSE result-expression>
END AS < column name>
As in IF-THEN statements, you can add as many WHEN conditions as you want. The conditions can be any valid SAS expression, including calculations, functions, and logical operators. It works as IF-THEN statements, too. If the conditions have been met, SAS will carry out the corresponding actions following the keyword THEN. If the WHEN condition is false, then PROC SQL executes the ELSE expression. You can create a new column and name it with AS keywords after END. The ELSE and AS keywords are optional. But it’s good practice to keep original columns while creating new ones.
Example 32.7
The following SAS program uses the CASE operator to assign different salary raise plans for each salary range:
PROC SQL ;
select Name,
Department,
employee_annual_salary label='salary' format=dollar12.2,
'next year raise:',
case
when employee_annual_salary=. then .
when employee_annual_salary < 85000 then 0.05
when 85000 <= employee_annual_salary < 125000 then 0.03
when employee_annual_salary >=125000 then 0.01
else 0
end as raise format=percent8.
from stat482.salary;
QUIT;
Name | Department | salary | raise | |
---|---|---|---|---|
WARNER | PROCUREMENT | $76,980.00 | next year raise: | 5% |
EDWARDS | POLICE | $83,616.00 | next year raise: | 5% |
PENDARVIS | POLICE | $103,590.00 | next year raise: | 3% |
CLARK | FIRE | $85,680.00 | next year raise: | 3% |
FOLINO | POLICE | $83,616.00 | next year raise: | 5% |
SAWYER | CITY COUNCIL | $117,333.00 | next year raise: | 3% |
WALTON | POLICE | $89,718.00 | next year raise: | 3% |
QUINLAN | TRANSPORTN | $95,888.04 | next year raise: | 3% |
SOTO | WATER MGMNT | $79,040.00 | next year raise: | 5% |
RUSS | WATER MGMNT | $79,040.00 | next year raise: | 5% |
MC GUIRE | POLICE | $86,520.00 | next year raise: | 3% |
GAWRISCH | POLICE | $86,520.00 | next year raise: | 3% |
CANO | FIRE | $86,520.00 | next year raise: | 3% |
CLARK | STREETS & SAN | $72,862.40 | next year raise: | 5% |
GIBOWICZ | POLICE | $83,616.00 | next year raise: | 5% |
MANCILLA | POLICE | $90,456.00 | next year raise: | 3% |
WYATT | WATER MGMNT | $65,686.40 | next year raise: | 5% |
VALLE | FIRE | $54,114.00 | next year raise: | 5% |
SISSAC | PUBLIC LIBRARY | $12,407.20 | next year raise: | 5% |
ARMSTEAD | POLICE | $80,778.00 | next year raise: | 5% |
WESTBROOK | TRANSPORTN | $71,780.80 | next year raise: | 5% |
KAIM | FIRE | $83,616.00 | next year raise: | 5% |
PAOLINO | POLICE | $83,616.00 | next year raise: | 5% |
WILSON | WATER MGMNT | $97,032.00 | next year raise: | 3% |
LANE | POLICE | $89,718.00 | next year raise: | 3% |
PAMBUKU | POLICE | $83,616.00 | next year raise: | 5% |
HUGHES | POLICE | $86,520.00 | next year raise: | 3% |
MIENTUS | FIRE | $99,324.00 | next year raise: | 3% |
HARRIS | STREETS & SAN | $71,780.80 | next year raise: | 5% |
WOOD | FIRE | $86,520.00 | next year raise: | 3% |
PEKIC | TRANSPORTN | $55,328.00 | next year raise: | 5% |
FLYNT | LAW | $25,152.40 | next year raise: | 5% |
ROMERO | POLICE | $83,616.00 | next year raise: | 5% |
ROBINSON | WATER MGMNT | $93,745.60 | next year raise: | 3% |
REMIASZ | POLICE | $83,616.00 | next year raise: | 5% |
CADIZ | CITY COUNCIL | $41,220.00 | next year raise: | 5% |
DAVILO | FIRE | $93,648.00 | next year raise: | 3% |
GUNDERSEN | FIRE | $90,018.00 | next year raise: | 3% |
VILLANUEVA | STREETS & SAN | $72,384.00 | next year raise: | 5% |
LAMMERSFELD | AVIATION | $71,780.80 | next year raise: | 5% |
GARCIA | STREETS & SAN | $63,708.00 | next year raise: | 5% |
RABANALES | FINANCE | $87,912.00 | next year raise: | 3% |
MIRANDA | STREETS & SAN | $43,201.60 | next year raise: | 5% |
KELLY | FIRE | $65,946.00 | next year raise: | 5% |
DURKIN | POLICE | $99,888.00 | next year raise: | 3% |
CLEMENS | FIRE | $80,778.00 | next year raise: | 5% |
ODUM | POLICE | $106,920.00 | next year raise: | 3% |
RUSSELL | POLICE | $83,616.00 | next year raise: | 5% |
HARRIS SR | POLICE | $92,316.00 | next year raise: | 3% |
GILLERLAIN | POLICE | $86,520.00 | next year raise: | 3% |
MONSOUR | FIRE | $99,888.00 | next year raise: | 3% |
PLANTZ | GENERAL SERVICES | $102,060.00 | next year raise: | 3% |
PRINGLE | POLICE | $86,520.00 | next year raise: | 3% |
WILLIAMS | POLICE | $83,616.00 | next year raise: | 5% |
FORD | FIRE | $100,440.00 | next year raise: | 3% |
KWAN | PUBLIC LIBRARY | $72,840.00 | next year raise: | 5% |
CAIN | POLICE | $86,520.00 | next year raise: | 3% |
CRAIG | FIRE | $99,888.00 | next year raise: | 3% |
SMITH | POLICE | $86,520.00 | next year raise: | 3% |
TERRONES | POLICE | $89,718.00 | next year raise: | 3% |
CHRISTIAN | FIRE | $86,520.00 | next year raise: | 3% |
DANIELS | POLICE | $106,920.00 | next year raise: | 3% |
CAMPANELLA | AVIATION | $55,428.00 | next year raise: | 5% |
ALANIZ | POLICE | $83,616.00 | next year raise: | 5% |
BYERLY | POLICE | $93,648.00 | next year raise: | 3% |
MALONEY | FIRE | $127,566.00 | next year raise: | 1% |
SLINIC | FIRE | $85,680.00 | next year raise: | 3% |
MOLLOY | COMMUNITY DEVELOPMENT | $102,060.00 | next year raise: | 3% |
WEST | FAMILY & SUPPORT | $73,200.00 | next year raise: | 5% |
TARASIEWICZ | TRANSPORTN | $75,732.80 | next year raise: | 5% |
HUNTLEY | STREETS & SAN | $55,968.00 | next year raise: | 5% |
RUSH | FIRE | $86,520.00 | next year raise: | 3% |
GIPSON | BUILDINGS | $95,880.00 | next year raise: | 3% |
BROWN | FAMILY & SUPPORT | $76,512.00 | next year raise: | 5% |
SPREYNE | AVIATION | $22,120.80 | next year raise: | 5% |
SIMPSON | POLICE | $86,520.00 | next year raise: | 3% |
PIERCE | POLICE | $80,778.00 | next year raise: | 5% |
KADING | FIRE | $88,680.00 | next year raise: | 3% |
BUEHRING | BUILDINGS | $93,228.00 | next year raise: | 3% |
FIORE | AVIATION | $71,780.80 | next year raise: | 5% |
DALY | FIRE | $73,296.00 | next year raise: | 5% |
ELLIOTT | FIRE | $93,648.00 | next year raise: | 3% |
PAYTON | HEALTH | $88,116.00 | next year raise: | 3% |
GARDNER | DoIT | $90,252.00 | next year raise: | 3% |
KIBBLE | POLICE | $86,520.00 | next year raise: | 3% |
GILLEN | FIRE | $93,594.00 | next year raise: | 3% |
BALEY | FIRE | $54,114.00 | next year raise: | 5% |
GAVIN | AVIATION | $98,675.20 | next year raise: | 3% |
BAYLIAN | POLICE | $69,684.00 | next year raise: | 5% |
BUBACZ | POLICE | $83,616.00 | next year raise: | 5% |
SHELTON | STREETS & SAN | $43,201.60 | next year raise: | 5% |
SHEA | HEALTH | $54,492.00 | next year raise: | 5% |
MARTINEZ | POLICE | $19,188.00 | next year raise: | 5% |
PULLEN | BUILDINGS | $97,760.04 | next year raise: | 3% |
STUCK | POLICE | $86,520.00 | next year raise: | 3% |
SUKALO | WATER MGMNT | $88,566.40 | next year raise: | 3% |
O'CONNOR | POLICE | $86,520.00 | next year raise: | 3% |
LABELLE | POLICE | $97,044.00 | next year raise: | 3% |
CALHOUN | STREETS & SAN | $71,780.80 | next year raise: | 5% |
MUELLER | POLICE | $92,316.00 | next year raise: | 3% |
GAJEWSKI | HEALTH | $95,880.00 | next year raise: | 3% |
PALOMAR | FIRE | $79,404.00 | next year raise: | 5% |
CASA JR | TRANSPORTN | $80,912.00 | next year raise: | 5% |
PATTERSON | PUBLIC LIBRARY | $72,840.00 | next year raise: | 5% |
CAMPBELL | WATER MGMNT | $79,040.00 | next year raise: | 5% |
PEKIC | FINANCE | $95,880.00 | next year raise: | 3% |
CALICDAN | POLICE | $83,616.00 | next year raise: | 5% |
NIEGO | FIRE | $143,682.00 | next year raise: | 1% |
PRICE | FIRE | $103,590.00 | next year raise: | 3% |
TATE JR | POLICE | $103,590.00 | next year raise: | 3% |
WHITE | STREETS & SAN | $72,862.40 | next year raise: | 5% |
YANEZ | AVIATION | $70,380.00 | next year raise: | 5% |
COWART SMITH | POLICE | $87,780.00 | next year raise: | 3% |
FENNER | STREETS & SAN | $43,201.60 | next year raise: | 5% |
VALENZUELA | POLICE | $93,648.00 | next year raise: | 3% |
PORTILLO | POLICE | $92,316.00 | next year raise: | 3% |
JIMENEZ | PROCUREMENT | $113,448.00 | next year raise: | 3% |
GINDEN | WATER MGMNT | $93,745.60 | next year raise: | 3% |
WILLIAMS | AVIATION | $40,788.80 | next year raise: | 5% |
MABERY | POLICE | $92,316.00 | next year raise: | 3% |
TURNER II | POLICE | $46,206.00 | next year raise: | 5% |
JOHNSON | POLICE | $46,206.00 | next year raise: | 5% |
FITZGERALD | OEMC | $64,188.00 | next year raise: | 5% |
REALFORD | FAMILY & SUPPORT | $2,756.00 | next year raise: | 5% |
GUTTILLO | FIRE | $99,324.00 | next year raise: | 3% |
PAVELA | WATER MGMNT | $88,566.40 | next year raise: | 3% |
BRADSHAW | POLICE | $99,888.00 | next year raise: | 3% |
CEBALLOS | WATER MGMNT | $113,448.00 | next year raise: | 3% |
EGAN | POLICE | $86,520.00 | next year raise: | 3% |
GUERRERO | WATER MGMNT | $60,408.00 | next year raise: | 5% |
GREEN | DISABILITIES | $36,264.00 | next year raise: | 5% |
MINGO | STREETS & SAN | $71,780.80 | next year raise: | 5% |
HARTS | FIRE | $86,520.00 | next year raise: | 3% |
FERMAN | FIRE | $131,466.00 | next year raise: | 1% |
SHIELDS | POLICE | $83,616.00 | next year raise: | 5% |
MARTINEZ | POLICE | $46,206.00 | next year raise: | 5% |
O NEILL | POLICE | $80,778.00 | next year raise: | 5% |
WILLIAMS | FIRE | $83,616.00 | next year raise: | 5% |
SHUM | TRANSPORTN | $104,736.00 | next year raise: | 3% |
SANCHEZ | STREETS & SAN | $72,384.00 | next year raise: | 5% |
MALECKI | POLICE | $86,520.00 | next year raise: | 3% |
WREN | TRANSPORTN | $64,308.00 | next year raise: | 5% |
HOWARD | TRANSPORTN | $95,888.04 | next year raise: | 3% |
LANDEROZ | STREETS & SAN | $71,780.80 | next year raise: | 5% |
KOCHANEY | FIRE | $65,946.00 | next year raise: | 5% |
MONTES DE OCA | TRANSPORTN | $37,812.00 | next year raise: | 5% |
BESSLER | AVIATION | $63,648.00 | next year raise: | 5% |
RIMKUS | POLICE | $89,718.00 | next year raise: | 3% |
LOPEZ SR | GENERAL SERVICES | $46,592.00 | next year raise: | 5% |
HOFFMAN | POLICE | $80,778.00 | next year raise: | 5% |
GARCIA | POLICE | $80,778.00 | next year raise: | 5% |
ROGERS | POLICE | $18,324.80 | next year raise: | 5% |
FUNK | FIRE | $101,688.00 | next year raise: | 3% |
GREGORY | POLICE | $13,790.40 | next year raise: | 5% |
KIERNA | STREETS & SAN | $40,560.00 | next year raise: | 5% |
BROWN | OEMC | $19,656.00 | next year raise: | 5% |
MENDIOLA | POLICE | $22,131.20 | next year raise: | 5% |
HALKO | GENERAL SERVICES | $46,592.00 | next year raise: | 5% |
BOWDERY | STREETS & SAN | $72,384.00 | next year raise: | 5% |
WRZESINSKI | FIRE | $105,918.00 | next year raise: | 3% |
BLUSTAIN | POLICE | $97,416.00 | next year raise: | 3% |
MUHAMMAD | FAMILY & SUPPORT | $80,328.00 | next year raise: | 5% |
GOLDSMITH | POLICE | $110,370.00 | next year raise: | 3% |
BURT | FAMILY & SUPPORT | $60,780.00 | next year raise: | 5% |
CASTRO | OEMC | $52,320.00 | next year raise: | 5% |
POLIT | STREETS & SAN | $71,780.80 | next year raise: | 5% |
CARLSEN | BUSINESS AFFAIRS | $57,456.00 | next year raise: | 5% |
WARREN | STREETS & SAN | $72,384.00 | next year raise: | 5% |
AUGUST | BOARD OF ELECTION | $74,988.00 | next year raise: | 5% |
ROSALES | POLICE | $89,718.00 | next year raise: | 3% |
KROGSTAD | STREETS & SAN | $97,968.00 | next year raise: | 3% |
BELLUOMINI | FIRE | $93,594.00 | next year raise: | 3% |
PAGAN | FINANCE | $84,780.00 | next year raise: | 5% |
MITCHELL | POLICE | $83,616.00 | next year raise: | 5% |
WHITE | BUSINESS AFFAIRS | $55,428.00 | next year raise: | 5% |
HEINE | TRANSPORTN | $95,888.04 | next year raise: | 3% |
LOPEZ | WATER MGMNT | $93,745.60 | next year raise: | 3% |
VERDIN | POLICE | $83,616.00 | next year raise: | 5% |
PFEST | POLICE | $89,718.00 | next year raise: | 3% |
SUERTH | WATER MGMNT | $97,968.00 | next year raise: | 3% |
FRUEH | LAW | $25,152.40 | next year raise: | 5% |
ONESTO | POLICE | $80,778.00 | next year raise: | 5% |
MURPHY | POLICE | $89,718.00 | next year raise: | 3% |
FRANKO | POLICE | $106,920.00 | next year raise: | 3% |
PUP | STREETS & SAN | $73,028.80 | next year raise: | 5% |
WEST | POLICE | $83,616.00 | next year raise: | 5% |
GRAY | STREETS & SAN | $72,384.00 | next year raise: | 5% |
ROSADO | BUILDINGS | $92,304.00 | next year raise: | 3% |
HILL | POLICE | $86,520.00 | next year raise: | 3% |
RADDATZ | POLICE | $110,370.00 | next year raise: | 3% |
BROWN | POLICE | $89,718.00 | next year raise: | 3% |
MURPHY | POLICE | $83,616.00 | next year raise: | 5% |
BLACKMAN | POLICE | $80,778.00 | next year raise: | 5% |
SHEPARD | WATER MGMNT | $91,520.00 | next year raise: | 3% |
DEL CID | POLICE | $83,616.00 | next year raise: | 5% |
JONES | GENERAL SERVICES | $46,592.00 | next year raise: | 5% |
HOOKER | POLICE | $92,316.00 | next year raise: | 3% |
GOLLADAY | POLICE | $17,232.80 | next year raise: | 5% |
CAAL | PUBLIC LIBRARY | $27,372.80 | next year raise: | 5% |
WOOD | FIRE | $93,648.00 | next year raise: | 3% |
HANEY | GENERAL SERVICES | $66,684.00 | next year raise: | 5% |
HURMAN | POLICE | $83,616.00 | next year raise: | 5% |
WILLIS | OEMC | $19,676.80 | next year raise: | 5% |
GOGOLA | ADMIN HEARNG | $91,980.00 | next year raise: | 3% |
MC NABB | FIRE | $105,918.00 | next year raise: | 3% |
TAYLOR | POLICE | $80,778.00 | next year raise: | 5% |
MC NAMARA | FIRE | $85,680.00 | next year raise: | 3% |
OLMSTEAD | FIRE | $90,456.00 | next year raise: | 3% |
HERBSTER | FIRE | $88,680.00 | next year raise: | 3% |
MATURA | POLICE | $92,316.00 | next year raise: | 3% |
WASINSKI | FIRE | $99,888.00 | next year raise: | 3% |
NOVAK | POLICE | $69,684.00 | next year raise: | 5% |
BARNES | POLICE | $80,778.00 | next year raise: | 5% |
DURHAM | POLICE | $58,020.00 | next year raise: | 5% |
LUCAS | FIRE | $85,680.00 | next year raise: | 3% |
DUDLEY | POLICE | $97,044.00 | next year raise: | 3% |
KOWALCZYK | FIRE | $87,534.00 | next year raise: | 3% |
TAGGART | STREETS & SAN | $72,384.00 | next year raise: | 5% |
SHAFFER | POLICE | $89,718.00 | next year raise: | 3% |
SANCHEZ | POLICE | $69,684.00 | next year raise: | 5% |
COLVIN | POLICE | $86,520.00 | next year raise: | 3% |
JOHNSON | POLICE | $17,492.80 | next year raise: | 5% |
FLEMING | POLICE | $100,440.00 | next year raise: | 3% |
THEODOROPOULOS | POLICE | $80,778.00 | next year raise: | 5% |
TEFFT | POLICE | $89,718.00 | next year raise: | 3% |
MARTIN | POLICE | $69,684.00 | next year raise: | 5% |
JAROSZ | OEMC | $65,676.00 | next year raise: | 5% |
CHICO | FAMILY & SUPPORT | $66,120.00 | next year raise: | 5% |
PETTENON | STREETS & SAN | $74,464.00 | next year raise: | 5% |
HERRERA | POLICE | $89,718.00 | next year raise: | 3% |
TORRES | WATER MGMNT | $79,040.00 | next year raise: | 5% |
SIPCHEN | POLICE | $90,456.00 | next year raise: | 3% |
FITZMAURICE | STREETS & SAN | $71,780.80 | next year raise: | 5% |
GLOVER | OEMC | $61,260.00 | next year raise: | 5% |
MICHALSKI | POLICE | $80,778.00 | next year raise: | 5% |
CASEY | POLICE | $110,370.00 | next year raise: | 3% |
WARD | FIRE | $54,114.00 | next year raise: | 5% |
CULLOTON | POLICE | $80,778.00 | next year raise: | 5% |
MACELLAIO JR | WATER MGMNT | $101,920.00 | next year raise: | 3% |
DAVIS | POLICE | $99,888.00 | next year raise: | 3% |
DARLING | LAW | $149,160.00 | next year raise: | 1% |
PASCUA | POLICE | $86,520.00 | next year raise: | 3% |
HULL | GENERAL SERVICES | $71,780.80 | next year raise: | 5% |
LEHNERT | FIRE | $88,680.00 | next year raise: | 3% |
NASH | FINANCE | $103,740.00 | next year raise: | 3% |
GLAZEWSKI | POLICE | $86,520.00 | next year raise: | 3% |
WALKER SMITH | PROCUREMENT | $77,280.00 | next year raise: | 5% |
QUEZADA | FIRE | $83,616.00 | next year raise: | 5% |
MC COY | POLICE | $110,370.00 | next year raise: | 3% |
ECKELS | FINANCE | $50,904.00 | next year raise: | 5% |
KILPONEN | POLICE | $69,684.00 | next year raise: | 5% |
DI VITO | TRANSPORTN | $93,808.00 | next year raise: | 3% |
CHAN | POLICE | $86,520.00 | next year raise: | 3% |
MIRANDA | OEMC | $77,220.00 | next year raise: | 5% |
SIMMONS JR | WATER MGMNT | $57,384.00 | next year raise: | 5% |
MITCHELL | OEMC | $19,656.00 | next year raise: | 5% |
GRISWOLD | FIRE | $90,798.00 | next year raise: | 3% |
CHAVOLLA | POLICE | $83,616.00 | next year raise: | 5% |
HAFFNER | AVIATION | $73,908.00 | next year raise: | 5% |
ROBERTS | FIRE | $79,404.00 | next year raise: | 5% |
HOLDER | WATER MGMNT | $108,534.40 | next year raise: | 3% |
KEREAKES | POLICE | $83,616.00 | next year raise: | 5% |
MORENO | COMMUNITY DEVELOPMENT | $77,280.00 | next year raise: | 5% |
JORDAN | STREETS & SAN | $72,384.00 | next year raise: | 5% |
COLEMAN | BUSINESS AFFAIRS | $84,072.00 | next year raise: | 5% |
SUMNER | PUBLIC LIBRARY | $72,840.00 | next year raise: | 5% |
COLBERT | POLICE | $60,780.00 | next year raise: | 5% |
JONES | WATER MGMNT | $43,950.40 | next year raise: | 5% |
AUGUSTAVE | LAW | $84,864.00 | next year raise: | 5% |
KOEGLER | POLICE | $80,778.00 | next year raise: | 5% |
DOYLE | POLICE | $86,520.00 | next year raise: | 3% |
SPOSATO | PUBLIC LIBRARY | $95,880.00 | next year raise: | 3% |
CUNNINGHAM | POLICE | $90,456.00 | next year raise: | 3% |
CAMACHO | FINANCE | $69,888.00 | next year raise: | 5% |
RICE | HEALTH | $52,848.00 | next year raise: | 5% |
CARDOZA | GENERAL SERVICES | $92,248.00 | next year raise: | 3% |
ADAMS | POLICE | $95,880.00 | next year raise: | 3% |
GONZALEZ | TRANSPORTN | $79,040.00 | next year raise: | 5% |
WILKERSON | FAMILY & SUPPORT | $2,756.00 | next year raise: | 5% |
BURT | WATER MGMNT | $88,968.00 | next year raise: | 3% |
PENSON | POLICE | $13,790.40 | next year raise: | 5% |
ORTIZ | POLICE | $69,684.00 | next year raise: | 5% |
TAYLOR | FIRE | $108,462.00 | next year raise: | 3% |
ANDERSON | POLICE | $93,648.00 | next year raise: | 3% |
DOTSON | POLICE | $80,424.00 | next year raise: | 5% |
ADAMS | GENERAL SERVICES | $43,950.40 | next year raise: | 5% |
DALCAMO | FIRE | $85,680.00 | next year raise: | 3% |
PERFETTI | POLICE | $112,068.00 | next year raise: | 3% |
JACKSON | POLICE | $80,778.00 | next year raise: | 5% |
JACOBS | POLICE | $106,920.00 | next year raise: | 3% |
HACKETT | POLICE | $99,888.00 | next year raise: | 3% |
SANTANA | FAMILY & SUPPORT | $66,684.00 | next year raise: | 5% |
MC DOWELL | POLICE | $16,692.00 | next year raise: | 5% |
HENRY | AVIATION | $108,534.40 | next year raise: | 3% |
JONES | FIRE | $97,044.00 | next year raise: | 3% |
ESPINOZA | STREETS & SAN | $72,384.00 | next year raise: | 5% |
MIRO | POLICE | $80,778.00 | next year raise: | 5% |
ALDAHONDO | POLICE | $80,778.00 | next year raise: | 5% |
CODA | POLICE | $73,296.00 | next year raise: | 5% |
COATS | HEALTH | $73,200.00 | next year raise: | 5% |
VALLE | STREETS & SAN | $72,384.00 | next year raise: | 5% |
FRAZIER | TRANSPORTN | $65,124.80 | next year raise: | 5% |
BRYSON | STREETS & SAN | $80,112.00 | next year raise: | 5% |
GILDERSLEEVE | OEMC | $73,764.00 | next year raise: | 5% |
SMITH JR | OEMC | $19,656.00 | next year raise: | 5% |
MC DONAGH | FIRE | $91,764.00 | next year raise: | 3% |
SOTO III | POLICE | $46,206.00 | next year raise: | 5% |
ROBINSON | WATER MGMNT | $79,040.00 | next year raise: | 5% |
PEREZ | FIRE | $85,680.00 | next year raise: | 3% |
AVALOS | POLICE | $86,520.00 | next year raise: | 3% |
LIBUNAO | HEALTH | $97,224.00 | next year raise: | 3% |
PORADZISZ | OEMC | $67,212.00 | next year raise: | 5% |
SOBOTKA | GENERAL SERVICES | $73,908.00 | next year raise: | 5% |
CUMMINGS | POLICE | $99,888.00 | next year raise: | 3% |
GARCIA | STREETS & SAN | $72,384.00 | next year raise: | 5% |
KULISZ | COMMUNITY DEVELOPMENT | $90,948.00 | next year raise: | 3% |
AVILES | CITY COUNCIL | $42,396.00 | next year raise: | 5% |
IRELAND | FIRE | $113,400.00 | next year raise: | 3% |
TRAYLOR | FIRE | $85,680.00 | next year raise: | 3% |
PROKOPOWICZ | HEALTH | $63,708.00 | next year raise: | 5% |
KAMPER | FIRE | $87,534.00 | next year raise: | 3% |
YOUNG | STREETS & SAN | $74,464.00 | next year raise: | 5% |
BRADY | TRANSPORTN | $95,888.04 | next year raise: | 3% |
You already know the format and label options from the previous explanations. There are a couple of new things in this example, however. First, you can insert a character(or numeric) constant as a new column in the table. Here a character string “next year raise” has been added between salary and raise. Raise is also a new column that has been created by the CASE operator based on the current annual salary of each person.
Download the SAS data set salary.sas7bdat on your computer and revise the libname
statement to reflect the directory where you save the file. Then launch and run the program. Review the query result to convince yourself that the raised values have been assigned correctly.
The CASE operator has two forms of syntax. In fact, if you use only one column for WHEN condition(s), this column’s name can be put after CASE and before WHEN. So you don’t have to repeat the column’s name in each WHEN condition. Below is the syntax for this form:
CASE <column-name>
when-condition THEN result-expression
<… WHEN when-condition THEN
result-expression>
<ELSE result-expression>
END AS < column name>
Example 32.8
The following program uses the simpler form of CASE construct to decide compensation (Yes or N/A) based on departments:
PROC SQL outobs=20;
select Name,
Department,
employee_annual_salary label='salary' format=dollar12.2,
case department
when 'POLICE' then 'Yes'
when 'FIRE' then 'Yes'
else 'N/A'
end as Compensation
from stat482.salary;
QUIT;
Name | Department | salary | Compensation |
---|---|---|---|
WARNER | PROCUREMENT | $76,980.00 | N/A |
EDWARDS | POLICE | $83,616.00 | Yes |
PENDARVIS | POLICE | $103,590.00 | Yes |
CLARK | FIRE | $85,680.00 | Yes |
FOLINO | POLICE | $83,616.00 | Yes |
SAWYER | CITY COUNCIL | $117,333.00 | N/A |
WALTON | POLICE | $89,718.00 | Yes |
QUINLAN | TRANSPORTN | $95,888.04 | N/A |
SOTO | WATER MGMNT | $79,040.00 | N/A |
RUSS | WATER MGMNT | $79,040.00 | N/A |
MC GUIRE | POLICE | $86,520.00 | Yes |
GAWRISCH | POLICE | $86,520.00 | Yes |
CANO | FIRE | $86,520.00 | Yes |
CLARK | STREETS & SAN | $72,862.40 | N/A |
GIBOWICZ | POLICE | $83,616.00 | Yes |
MANCILLA | POLICE | $90,456.00 | Yes |
WYATT | WATER MGMNT | $65,686.40 | N/A |
VALLE | FIRE | $54,114.00 | Yes |
SISSAC | PUBLIC LIBRARY | $12,407.20 | N/A |
ARMSTEAD | POLICE | $80,778.00 | Yes |
The above code uses the same data set as the previous example, salary. It assigns the different compensation plans based on which department people work for and creates a new column, Compensation, for the result. This time, the column name Department has been put outside the WHEN conditions and into the CASE operator. So we don’t need coding like “WHEN department=’POLICE’” anymore.
Another feature is the option you can use in the PROC SQL statement, OUTOBS=n. It can be used to limit the number of rows displayed in the output. So in this case, we would expect the table in the output window shows the first 20 rows of the data. And such a warning message will be delivered in the log file.
WARNING: Statement terminated early due to OUTBOS=20 option.
Note that OUTOBS= will also affect tables that are created by the CREATE TABLE statement.
Launch and run the program. Then check the query result to make sure the records have been processed as expected. Note that you have to be cautious with this simpler form. For instance, if you move Employee_annual_salary out of the WHEN conditions in the program of Example7, SAS will report an error and not execute!
32.3 - Using the WHERE Clause
32.3 - Using the WHERE ClauseAs you know, the WHERE statement or option in the DATA step or other procedures is very useful in selecting observations from a data set based on some criteria. In PROC SQL, the WHERE clause in the SELECT statement can also be used to subset data based on specified conditions. Any valid SAS expression can be put inside the WHERE clause, including functions, comparison or logical operators, and even some special operators. Making good use of it can increase programming efficiency and save computing resources greatly. As always, we will work through this subject with examples.
Example 32.9
The following example uses the WHERE clause to select employees who work at a police department and have the job title of sergeant:
PROC SQL;
select Name,
Department,
Employee_annual_salary
from stat482.salary
where Department='POLICE' AND Position_title='SERGEANT';
QUIT;
Name | Department | Employee Annual Salary |
---|---|---|
PENDARVIS | POLICE | 103590 |
ODUM | POLICE | 106920 |
DANIELS | POLICE | 106920 |
TATE JR | POLICE | 103590 |
GOLDSMITH | POLICE | 110370 |
FRANKO | POLICE | 106920 |
RADDATZ | POLICE | 110370 |
FLEMING | POLICE | 100440 |
CASEY | POLICE | 110370 |
MC COY | POLICE | 110370 |
JACOBS | POLICE | 106920 |
To run this program, please download the SAS data set salary.sas7bdat and save it to your computer.
Reading through the program, you must have known that it selects the name, department, and annual salary information from salary data for police sergeants. Note that the columns in the WHERE clause do not have to be specified in the SELECT clause, (such as Position title), which is used in the WHERE clause but not in the SELECT clause. However, for the sake of the results checking, I would suggest keeping these columns in the query until verified.
Launch and run the SAS program, and review the output to convince yourself that the records have been selected as described.
We saw two types of operators used in the above program, the comparison (=) and the logical (and). Besides these common ones, another type that could be very useful in your programming is called a conditional operator. You may know some of them already, like IN, CONTAINS, and MISSING. You can find the complete list of operators in the SAS documentation. Next, let’s look at a couple of examples of this using BETWEEN AND and LIKE.
BETWEEN value-1 AND value-2
Both value-1 and value-2 are end values. So you can use the BETWEEN AND operator to specify a range of values, such as from one date to another, or from lower limit to upper limit. The smaller value does not have to be the first.
Example 32.10
The following program uses the operator, BETWEEN AND, to select observations from salary data whose annual salary is between \65,000 and \70,000, and also works in the Fire department:
PROC SQL;
select Name,
Department,
Employee_annual_salary label='Salary' format=DOLLAR12.2
from stat482.salary
where Employee_annual_salary between 65000 and 70000
and Department='FIRE';
QUIT;
Name | Department | Salary |
---|---|---|
KELLY | FIRE | $65,946.00 |
KOCHANEY | FIRE | $65,946.00 |
Launch and run the SAS program, and review the query output to convince yourself that the SAS yield the result as expected.
Column LIKE ‘pattern’
With the LIKE operator, you have to specify a column name and the pattern to be matched. Regarding the pattern, first, it is case-sensitive and has to be enclosed in quotation marks; secondly, it may contain a special character, either an underscore(_) and/or a percent sign(%). The underscore character stands for any single character and the percent sign for any sequence of zero or more characters. For example, assume that you are working with a table containing these values for a column.
- Cathy
- Kathy
- Kathie
- Katherine
Now using different patterns, the selection results are different:
Patterns | Results |
---|---|
Kath_ | Kathy |
Kath__ | Kathie |
Kath% | Kathy, Kathie, Katherine |
_ath% | All of the names above |
Example 32.11
The following program shows the use of the LIKE operator in a WHERE clause to select name, department, position title and annual salary information for people whose name starts with R and the third letter is B:
PROC SQL;
select Name,
Department,
Position_title,
Employee_annual_salary label='Salary' format=DOLLAR12.2
from stat482.salary
where Name like 'R_B%';
QUIT;
Name | Department | Position Title | Salary |
---|---|---|---|
ROBINSON | WATER MGMNT | OPERATING ENGINEER-GROUP C | $93,745.60 |
RABANALES | FINANCE | AUDITOR II | $87,912.00 |
ROBERTS | FIRE | PARAMEDIC I/C | $79,404.00 |
ROBINSON | WATER MGMNT | CONSTRUCTION LABORER | $79,040.00 |
Launch and run the SAS program, and review the query output to convince yourself that the SAS behaves as described.
Another point worthy of being made here is the CALCULATED keywords. In the last section, you learned that we can perform calculations in the SELECT statement and assign an alias to that new column. However, because SAS processes the WHERE clause prior to the SELECT clause, you will run into a problem if the calculated column is used in a WHERE clause as a condition. Therefore, the keyword CALCULATED has to be inserted into the WHERE clause along with the alias to inform SAS that the value is calculated within the query. This point will be illustrated by the following programs.
Example 32.12
The following program attempts to calculate the bonus for every employee, then select ones who have more than $2,000 as a bonus:
PROC SQL;
select Name,
Department,
Employee_annual_salary label='Salary' format=DOLLAR12.2,
Employee_annual_salary * 0.02 as Bonus
from stat482.salary
where Bonus >2000 ;
QUIT;
Launch and run the SAS program. You may want to see what’s going wrong yourself. In the log window, SAS delivered an error message that the column Bonus cannot be found.
ERROR: The Following columns were not found in the contributing tables: Bonus.
That’s because SAS processes the WHERE clause before the SELECT clause. To make it right, add CALCULATED in the WHERE clause as shown below.
PROC SQL;
select Name,
Department,
Employee_annual_salary label='Salary' format=DOLLAR12.2,
Employee_annual_salary * 0.02 as Bonus format=DOLLAR10.2
from stat482.salary
where CALCULATED Bonus >2000 ;
QUIT;
Name | Department | Salary | Bonus |
---|---|---|---|
PENDARVIS | POLICE | $103,590.00 | $2,071.80 |
SAWYER | CITY COUNCIL | $117,333.00 | $2,346.66 |
ODUM | POLICE | $106,920.00 | $2,138.40 |
PLANTZ | GENERAL SERVICES | $102,060.00 | $2,041.20 |
FORD | FIRE | $100,440.00 | $2,008.80 |
DANIELS | POLICE | $106,920.00 | $2,138.40 |
MALONEY | FIRE | $127,566.00 | $2,551.32 |
MOLLOY | COMMUNITY DEVELOPMENT | $102,060.00 | $2,041.20 |
NIEGO | FIRE | $143,682.00 | $2,873.64 |
PRICE | FIRE | $103,590.00 | $2,071.80 |
TATE JR | POLICE | $103,590.00 | $2,071.80 |
JIMENEZ | PROCUREMENT | $113,448.00 | $2,268.96 |
CEBALLOS | WATER MGMNT | $113,448.00 | $2,268.96 |
FERMAN | FIRE | $131,466.00 | $2,629.32 |
SHUM | TRANSPORTN | $104,736.00 | $2,094.72 |
FUNK | FIRE | $101,688.00 | $2,033.76 |
WRZESINSKI | FIRE | $105,918.00 | $2,118.36 |
GOLDSMITH | POLICE | $110,370.00 | $2,207.40 |
FRANKO | POLICE | $106,920.00 | $2,138.40 |
RADDATZ | POLICE | $110,370.00 | $2,207.40 |
MC NABB | FIRE | $105,918.00 | $2,118.36 |
FLEMING | POLICE | $100,440.00 | $2,008.80 |
CASEY | POLICE | $110,370.00 | $2,207.40 |
MACELLAIO JR | WATER MGMNT | $101,920.00 | $2,038.40 |
DARLING | LAW | $149,160.00 | $2,983.20 |
NASH | FINANCE | $103,740.00 | $2,074.80 |
MC COY | POLICE | $110,370.00 | $2,207.40 |
HOLDER | WATER MGMNT | $108,534.40 | $2,170.69 |
TAYLOR | FIRE | $108,462.00 | $2,169.24 |
PERFETTI | POLICE | $112,068.00 | $2,241.36 |
JACOBS | POLICE | $106,920.00 | $2,138.40 |
HENRY | AVIATION | $108,534.40 | $2,170.69 |
IRELAND | FIRE | $113,400.00 | $2,268.00 |
Now it’s working! Make the same change to your program. Check the output to make sure that SAS processes the data properly.
An alternative to using the keyword CALCULATED is to repeat the calculation expression in the WHERE clause. In the preceding program, the WHERE clause can be rewritten as:
where Employee_annual_salary *0.02 >2000;
But note that this is not an efficient way to do this because SAS has to do the calculation twice.
32.4 - Sorting Data
32.4 - Sorting DataThe SELECT and FROM clauses are indispensable in the SELECT statement. Other clauses may be optional but very useful when querying a table. The last section introduced the WHERE clause and how to use it to select rows conditionally. From previous examples, you may have noticed that the order of observations might remain the same as they were in the original data set. If, however, you want to specify the order of data, you will need the ORDER BY clause to sort the data as you want.
Example 32.13
The following SAS program uses the ORDER BY in SELECT statement inside PROC SQL to sort the data in the file survey.sas7bdat by the values of gender and GPA:
PROC SQL;
select ID,
Gender,
GPA,
SATM,
SATV
from stat482.survey
where SATV is not null and GPA>3
order by Gender, GPA ;
QUIT;
id | Gender | GPA | SATM | SATV |
---|---|---|---|---|
1219 | Female | 3.01 | 630 | 590 |
1039 | Female | 3.02 | 560 | 560 |
1125 | Female | 3.08 | 470 | 510 |
1203 | Female | 3.1 | 500 | 610 |
1139 | Female | 3.1 | 530 | 600 |
1068 | Female | 3.1 | 550 | 610 |
1116 | Female | 3.1 | 560 | 550 |
1072 | Female | 3.1 | 570 | 570 |
1138 | Female | 3.12 | 560 | 580 |
1120 | Female | 3.16 | 680 | 670 |
1102 | Female | 3.2 | 620 | 630 |
1142 | Female | 3.2 | 720 | 500 |
1020 | Female | 3.2 | 600 | 630 |
1201 | Female | 3.21 | 760 | 660 |
1089 | Female | 3.25 | 500 | 600 |
1133 | Female | 3.27 | 450 | 550 |
1144 | Female | 3.27 | 640 | 600 |
1163 | Female | 3.3 | 600 | 590 |
1038 | Female | 3.3 | 680 | 650 |
1069 | Female | 3.3 | 600 | 490 |
1033 | Female | 3.3 | 650 | 600 |
1115 | Female | 3.3 | 580 | 620 |
1057 | Female | 3.3 | 600 | 600 |
1037 | Female | 3.3 | 500 | 400 |
1109 | Female | 3.31 | 500 | 490 |
1215 | Female | 3.33 | 650 | 630 |
1078 | Female | 3.33 | 570 | 490 |
1060 | Female | 3.36 | 540 | 550 |
1030 | Female | 3.36 | 450 | 450 |
1129 | Female | 3.4 | 500 | 540 |
1100 | Female | 3.4 | 490 | 520 |
1196 | Female | 3.41 | 480 | 560 |
1046 | Female | 3.42 | 660 | 580 |
1165 | Female | 3.45 | 560 | 500 |
1148 | Female | 3.46 | 620 | 640 |
1082 | Female | 3.48 | 550 | 690 |
1096 | Female | 3.48 | 750 | 550 |
1168 | Female | 3.5 | 650 | 560 |
1091 | Female | 3.5 | 800 | 650 |
1018 | Female | 3.5 | 600 | 750 |
1181 | Female | 3.5 | 600 | 550 |
1123 | Female | 3.51 | 560 | 530 |
1177 | Female | 3.53 | 520 | 500 |
1063 | Female | 3.53 | 560 | 590 |
1015 | Female | 3.55 | 400 | 600 |
1058 | Female | 3.55 | 585 | 590 |
1160 | Female | 3.57 | 700 | 700 |
1159 | Female | 3.59 | 640 | 440 |
1202 | Female | 3.6 | 460 | 540 |
1004 | Female | 3.6 | 710 | 560 |
1086 | Female | 3.6 | 540 | 570 |
1035 | Female | 3.61 | 500 | 550 |
1187 | Female | 3.62 | 780 | 660 |
1149 | Female | 3.63 | 640 | 700 |
1110 | Female | 3.63 | 700 | 600 |
1011 | Female | 3.67 | 690 | 690 |
1044 | Female | 3.7 | 570 | 560 |
1145 | Female | 3.7 | 500 | 450 |
1207 | Female | 3.7 | 640 | 670 |
1052 | Female | 3.7 | 600 | 620 |
1218 | Female | 3.71 | 540 | 560 |
1174 | Female | 3.74 | 680 | 600 |
1118 | Female | 3.74 | 650 | 700 |
1031 | Female | 3.75 | 640 | 620 |
1073 | Female | 3.76 | 600 | 550 |
1005 | Female | 3.76 | 600 | 520 |
1055 | Female | 3.76 | 760 | 600 |
1204 | Female | 3.77 | 650 | 630 |
1199 | Female | 3.77 | 620 | 640 |
1134 | Female | 3.78 | 650 | 600 |
1208 | Female | 3.78 | 550 | 400 |
1010 | Female | 3.8 | 580 | 540 |
1197 | Female | 3.8 | 600 | 700 |
1205 | Female | 3.8 | 550 | 550 |
1077 | Female | 3.81 | 560 | 610 |
1105 | Female | 3.81 | 510 | 680 |
1179 | Female | 3.83 | 660 | 660 |
1023 | Female | 3.88 | 670 | 680 |
1094 | Female | 3.89 | 640 | 710 |
1067 | Female | 3.9 | 640 | 560 |
1065 | Female | 3.9 | 575 | 600 |
1081 | Female | 3.94 | 620 | 600 |
1014 | Female | 4 | 700 | 700 |
1075 | Female | 4 | 650 | 550 |
1214 | Female | 4 | 590 | 500 |
1157 | Male | 3.02 | 400 | 400 |
1047 | Male | 3.02 | 700 | 570 |
1084 | Male | 3.03 | 690 | 690 |
1140 | Male | 3.04 | 540 | 600 |
1152 | Male | 3.05 | 600 | 500 |
1130 | Male | 3.06 | 660 | 620 |
1151 | Male | 3.08 | 590 | 590 |
1053 | Male | 3.08 | 420 | 490 |
1097 | Male | 3.1 | 640 | 430 |
1137 | Male | 3.1 | 580 | 640 |
1090 | Male | 3.12 | 560 | 330 |
1185 | Male | 3.13 | 600 | 600 |
1101 | Male | 3.13 | 570 | 490 |
1209 | Male | 3.14 | 580 | 580 |
1041 | Male | 3.16 | 620 | 760 |
1220 | Male | 3.19 | 480 | 480 |
1153 | Male | 3.2 | 550 | 630 |
1071 | Male | 3.2 | 650 | 660 |
1119 | Male | 3.2 | 640 | 630 |
1045 | Male | 3.2 | 680 | 710 |
1217 | Male | 3.21 | 620 | 400 |
1200 | Male | 3.21 | 650 | 590 |
1222 | Male | 3.24 | 510 | 680 |
1175 | Male | 3.3 | 640 | 600 |
1170 | Male | 3.3 | 610 | 590 |
1016 | Male | 3.3 | 640 | 600 |
1095 | Male | 3.33 | 690 | 650 |
1212 | Male | 3.35 | 570 | 480 |
1098 | Male | 3.36 | 540 | 520 |
1027 | Male | 3.36 | 550 | 600 |
1017 | Male | 3.38 | 720 | 580 |
1087 | Male | 3.4 | 580 | 570 |
1161 | Male | 3.4 | 600 | 630 |
1036 | Male | 3.42 | 530 | 760 |
1221 | Male | 3.42 | 590 | 610 |
1194 | Male | 3.46 | 640 | 600 |
1009 | Male | 3.48 | 690 | 620 |
1029 | Male | 3.5 | 680 | 680 |
1048 | Male | 3.51 | 650 | 590 |
1024 | Male | 3.51 | 600 | 730 |
1034 | Male | 3.53 | 670 | 630 |
1206 | Male | 3.53 | 620 | 630 |
1111 | Male | 3.54 | 540 | 570 |
1150 | Male | 3.55 | 630 | 650 |
1106 | Male | 3.57 | 620 | 500 |
1042 | Male | 3.66 | 640 | 640 |
1169 | Male | 3.67 | 650 | 670 |
1019 | Male | 3.7 | 600 | 720 |
1080 | Male | 3.72 | 660 | 660 |
1079 | Male | 3.72 | 700 | 640 |
1059 | Male | 3.72 | 800 | 750 |
1173 | Male | 3.73 | 580 | 590 |
1166 | Male | 3.74 | 700 | 520 |
1070 | Male | 3.76 | 600 | 610 |
1062 | Male | 3.76 | 670 | 670 |
1226 | Male | 3.78 | 630 | 520 |
1162 | Male | 3.83 | 710 | 710 |
1006 | Male | 3.86 | 610 | 720 |
1180 | Male | 3.86 | 720 | 500 |
1172 | Male | 3.87 | 780 | 580 |
1122 | Male | 3.88 | 670 | 510 |
1131 | Male | 3.92 | 730 | 800 |
1007 | Male | 3.94 | 710 | 670 |
1028 | Male | 4 | 610 | 600 |
Download survey data to your own computer and change the directory if needed to reflect the local directory where you saved the file. Then launch and run the SAS program, and review the output to convince yourself that the query result is in order first by gender and then by GPA.
Several things need to be pointed out regarding the above program:
- You can use one or more columns in ORDER BY to sort the data. A comma is used to separate multiple column names. In this example, two columns have been used, Gender and GPA. So the data will be sorted by Gender first, then by GPA in order.
- By default, the values of column(s) will be sorted ascendingly. For example, there are two values in Gender, Female, and Male. In the query result, Female records are listed first, then male ones because SAS sorted them by the first letter in alphabetical order. As to GPA order, since it’s numeric, SAS sorted observations by number values of GPA inside each gender group.
- The WHERE clause is used to select observations that her/his SAT verbal score is not missing and GPA greater than 3. “is not null” and “is not missing” are interchangeable to indicate no missing values included.
As in PROC SORT, if you want to change the default ascending order into descending order, you just need to specify DESC following the column name.
Example 32.14
The following SAS program sorts the data survey.sas7bdat by the values of gender in descending order and then by GPA ascendingly:
PROC SQL;
select ID,
Gender,
GPA,
SATM,
SATV
from stat482.survey
where SATV is not null and GPA>3
order by Gender desc, 3 ;
QUIT;
id | Gender | GPA | SATM | SATV |
---|---|---|---|---|
1047 | Male | 3.02 | 700 | 570 |
1157 | Male | 3.02 | 400 | 400 |
1084 | Male | 3.03 | 690 | 690 |
1140 | Male | 3.04 | 540 | 600 |
1152 | Male | 3.05 | 600 | 500 |
1130 | Male | 3.06 | 660 | 620 |
1053 | Male | 3.08 | 420 | 490 |
1151 | Male | 3.08 | 590 | 590 |
1137 | Male | 3.1 | 580 | 640 |
1097 | Male | 3.1 | 640 | 430 |
1090 | Male | 3.12 | 560 | 330 |
1185 | Male | 3.13 | 600 | 600 |
1101 | Male | 3.13 | 570 | 490 |
1209 | Male | 3.14 | 580 | 580 |
1041 | Male | 3.16 | 620 | 760 |
1220 | Male | 3.19 | 480 | 480 |
1045 | Male | 3.2 | 680 | 710 |
1071 | Male | 3.2 | 650 | 660 |
1119 | Male | 3.2 | 640 | 630 |
1153 | Male | 3.2 | 550 | 630 |
1200 | Male | 3.21 | 650 | 590 |
1217 | Male | 3.21 | 620 | 400 |
1222 | Male | 3.24 | 510 | 680 |
1175 | Male | 3.3 | 640 | 600 |
1016 | Male | 3.3 | 640 | 600 |
1170 | Male | 3.3 | 610 | 590 |
1095 | Male | 3.33 | 690 | 650 |
1212 | Male | 3.35 | 570 | 480 |
1098 | Male | 3.36 | 540 | 520 |
1027 | Male | 3.36 | 550 | 600 |
1017 | Male | 3.38 | 720 | 580 |
1161 | Male | 3.4 | 600 | 630 |
1087 | Male | 3.4 | 580 | 570 |
1221 | Male | 3.42 | 590 | 610 |
1036 | Male | 3.42 | 530 | 760 |
1194 | Male | 3.46 | 640 | 600 |
1009 | Male | 3.48 | 690 | 620 |
1029 | Male | 3.5 | 680 | 680 |
1048 | Male | 3.51 | 650 | 590 |
1024 | Male | 3.51 | 600 | 730 |
1034 | Male | 3.53 | 670 | 630 |
1206 | Male | 3.53 | 620 | 630 |
1111 | Male | 3.54 | 540 | 570 |
1150 | Male | 3.55 | 630 | 650 |
1106 | Male | 3.57 | 620 | 500 |
1042 | Male | 3.66 | 640 | 640 |
1169 | Male | 3.67 | 650 | 670 |
1019 | Male | 3.7 | 600 | 720 |
1080 | Male | 3.72 | 660 | 660 |
1079 | Male | 3.72 | 700 | 640 |
1059 | Male | 3.72 | 800 | 750 |
1173 | Male | 3.73 | 580 | 590 |
1166 | Male | 3.74 | 700 | 520 |
1070 | Male | 3.76 | 600 | 610 |
1062 | Male | 3.76 | 670 | 670 |
1226 | Male | 3.78 | 630 | 520 |
1162 | Male | 3.83 | 710 | 710 |
1180 | Male | 3.86 | 720 | 500 |
1006 | Male | 3.86 | 610 | 720 |
1172 | Male | 3.87 | 780 | 580 |
1122 | Male | 3.88 | 670 | 510 |
1131 | Male | 3.92 | 730 | 800 |
1007 | Male | 3.94 | 710 | 670 |
1028 | Male | 4 | 610 | 600 |
1219 | Female | 3.01 | 630 | 590 |
1039 | Female | 3.02 | 560 | 560 |
1125 | Female | 3.08 | 470 | 510 |
1072 | Female | 3.1 | 570 | 570 |
1139 | Female | 3.1 | 530 | 600 |
1068 | Female | 3.1 | 550 | 610 |
1116 | Female | 3.1 | 560 | 550 |
1203 | Female | 3.1 | 500 | 610 |
1138 | Female | 3.12 | 560 | 580 |
1120 | Female | 3.16 | 680 | 670 |
1020 | Female | 3.2 | 600 | 630 |
1142 | Female | 3.2 | 720 | 500 |
1102 | Female | 3.2 | 620 | 630 |
1201 | Female | 3.21 | 760 | 660 |
1089 | Female | 3.25 | 500 | 600 |
1144 | Female | 3.27 | 640 | 600 |
1133 | Female | 3.27 | 450 | 550 |
1163 | Female | 3.3 | 600 | 590 |
1038 | Female | 3.3 | 680 | 650 |
1037 | Female | 3.3 | 500 | 400 |
1069 | Female | 3.3 | 600 | 490 |
1033 | Female | 3.3 | 650 | 600 |
1057 | Female | 3.3 | 600 | 600 |
1115 | Female | 3.3 | 580 | 620 |
1109 | Female | 3.31 | 500 | 490 |
1078 | Female | 3.33 | 570 | 490 |
1215 | Female | 3.33 | 650 | 630 |
1060 | Female | 3.36 | 540 | 550 |
1030 | Female | 3.36 | 450 | 450 |
1129 | Female | 3.4 | 500 | 540 |
1100 | Female | 3.4 | 490 | 520 |
1196 | Female | 3.41 | 480 | 560 |
1046 | Female | 3.42 | 660 | 580 |
1165 | Female | 3.45 | 560 | 500 |
1148 | Female | 3.46 | 620 | 640 |
1082 | Female | 3.48 | 550 | 690 |
1096 | Female | 3.48 | 750 | 550 |
1181 | Female | 3.5 | 600 | 550 |
1168 | Female | 3.5 | 650 | 560 |
1018 | Female | 3.5 | 600 | 750 |
1091 | Female | 3.5 | 800 | 650 |
1123 | Female | 3.51 | 560 | 530 |
1177 | Female | 3.53 | 520 | 500 |
1063 | Female | 3.53 | 560 | 590 |
1058 | Female | 3.55 | 585 | 590 |
1015 | Female | 3.55 | 400 | 600 |
1160 | Female | 3.57 | 700 | 700 |
1159 | Female | 3.59 | 640 | 440 |
1086 | Female | 3.6 | 540 | 570 |
1004 | Female | 3.6 | 710 | 560 |
1202 | Female | 3.6 | 460 | 540 |
1035 | Female | 3.61 | 500 | 550 |
1187 | Female | 3.62 | 780 | 660 |
1149 | Female | 3.63 | 640 | 700 |
1110 | Female | 3.63 | 700 | 600 |
1011 | Female | 3.67 | 690 | 690 |
1044 | Female | 3.7 | 570 | 560 |
1145 | Female | 3.7 | 500 | 450 |
1052 | Female | 3.7 | 600 | 620 |
1207 | Female | 3.7 | 640 | 670 |
1218 | Female | 3.71 | 540 | 560 |
1174 | Female | 3.74 | 680 | 600 |
1118 | Female | 3.74 | 650 | 700 |
1031 | Female | 3.75 | 640 | 620 |
1073 | Female | 3.76 | 600 | 550 |
1055 | Female | 3.76 | 760 | 600 |
1005 | Female | 3.76 | 600 | 520 |
1204 | Female | 3.77 | 650 | 630 |
1199 | Female | 3.77 | 620 | 640 |
1134 | Female | 3.78 | 650 | 600 |
1208 | Female | 3.78 | 550 | 400 |
1010 | Female | 3.8 | 580 | 540 |
1205 | Female | 3.8 | 550 | 550 |
1197 | Female | 3.8 | 600 | 700 |
1077 | Female | 3.81 | 560 | 610 |
1105 | Female | 3.81 | 510 | 680 |
1179 | Female | 3.83 | 660 | 660 |
1023 | Female | 3.88 | 670 | 680 |
1094 | Female | 3.89 | 640 | 710 |
1067 | Female | 3.9 | 640 | 560 |
1065 | Female | 3.9 | 575 | 600 |
1081 | Female | 3.94 | 620 | 600 |
1075 | Female | 4 | 650 | 550 |
1014 | Female | 4 | 700 | 700 |
1214 | Female | 4 | 590 | 500 |
There are only two places that are different from the program in the previous example. DESC has been added after Gender to tell SAS to sort the data descending. Another way to refer to the column rather than its name is its location in the SELECT clause. GPA is listed as the third one so we can use 3 to specify GPA.
Launch and run the SAS program, and then review the output to convince yourself that the output from this query is in descending order of Gender and in ascending order of GPA.
Up until now, you might think that ORDER BY can perform the same as PROC SORT. Actually, it can do more than that. Let’s find out with the next example.
Example 32.15
The following program sorts the survey data first by gender in descending order as before, then by mean values of SAT math and verbal scores in ascending order:
PROC SQL;
select *
from stat482.survey
where SATV is not null and GPA>3
order by Gender desc, MEAN(SATM,SATV) ;
QUIT;
id | Gender | GPA | SmokeCigarettes | SATM | SATV |
---|---|---|---|---|---|
1157 | Male | 3.02 | No | 400 | 400 |
1090 | Male | 3.12 | No | 560 | 330 |
1053 | Male | 3.08 | No | 420 | 490 |
1220 | Male | 3.19 | No | 480 | 480 |
1217 | Male | 3.21 | No | 620 | 400 |
1212 | Male | 3.35 | No | 570 | 480 |
1101 | Male | 3.13 | No | 570 | 490 |
1098 | Male | 3.36 | No | 540 | 520 |
1097 | Male | 3.1 | No | 640 | 430 |
1152 | Male | 3.05 | No | 600 | 500 |
1111 | Male | 3.54 | No | 540 | 570 |
1106 | Male | 3.57 | No | 620 | 500 |
1140 | Male | 3.04 | Yes | 540 | 600 |
1226 | Male | 3.78 | No | 630 | 520 |
1087 | Male | 3.4 | No | 580 | 570 |
1027 | Male | 3.36 | No | 550 | 600 |
1209 | Male | 3.14 | No | 580 | 580 |
1173 | Male | 3.73 | No | 580 | 590 |
1122 | Male | 3.88 | No | 670 | 510 |
1153 | Male | 3.2 | No | 550 | 630 |
1151 | Male | 3.08 | No | 590 | 590 |
1222 | Male | 3.24 | No | 510 | 680 |
1185 | Male | 3.13 | No | 600 | 600 |
1221 | Male | 3.42 | Yes | 590 | 610 |
1170 | Male | 3.3 | No | 610 | 590 |
1070 | Male | 3.76 | No | 600 | 610 |
1028 | Male | 4 | No | 610 | 600 |
1137 | Male | 3.1 | No | 580 | 640 |
1166 | Male | 3.74 | No | 700 | 520 |
1180 | Male | 3.86 | No | 720 | 500 |
1161 | Male | 3.4 | No | 600 | 630 |
1175 | Male | 3.3 | Yes | 640 | 600 |
1016 | Male | 3.3 | No | 640 | 600 |
1194 | Male | 3.46 | No | 640 | 600 |
1048 | Male | 3.51 | No | 650 | 590 |
1200 | Male | 3.21 | No | 650 | 590 |
1206 | Male | 3.53 | No | 620 | 630 |
1119 | Male | 3.2 | No | 640 | 630 |
1047 | Male | 3.02 | No | 700 | 570 |
1150 | Male | 3.55 | No | 630 | 650 |
1042 | Male | 3.66 | No | 640 | 640 |
1130 | Male | 3.06 | No | 660 | 620 |
1036 | Male | 3.42 | No | 530 | 760 |
1034 | Male | 3.53 | No | 670 | 630 |
1017 | Male | 3.38 | No | 720 | 580 |
1071 | Male | 3.2 | No | 650 | 660 |
1009 | Male | 3.48 | No | 690 | 620 |
1080 | Male | 3.72 | No | 660 | 660 |
1169 | Male | 3.67 | No | 650 | 670 |
1019 | Male | 3.7 | No | 600 | 720 |
1006 | Male | 3.86 | No | 610 | 720 |
1024 | Male | 3.51 | No | 600 | 730 |
1079 | Male | 3.72 | No | 700 | 640 |
1062 | Male | 3.76 | No | 670 | 670 |
1095 | Male | 3.33 | No | 690 | 650 |
1172 | Male | 3.87 | Yes | 780 | 580 |
1029 | Male | 3.5 | No | 680 | 680 |
1041 | Male | 3.16 | No | 620 | 760 |
1007 | Male | 3.94 | No | 710 | 670 |
1084 | Male | 3.03 | No | 690 | 690 |
1045 | Male | 3.2 | No | 680 | 710 |
1162 | Male | 3.83 | No | 710 | 710 |
1131 | Male | 3.92 | No | 730 | 800 |
1059 | Male | 3.72 | No | 800 | 750 |
1037 | Female | 3.3 | No | 500 | 400 |
1030 | Female | 3.36 | No | 450 | 450 |
1145 | Female | 3.7 | No | 500 | 450 |
1208 | Female | 3.78 | No | 550 | 400 |
1125 | Female | 3.08 | No | 470 | 510 |
1109 | Female | 3.31 | No | 500 | 490 |
1133 | Female | 3.27 | No | 450 | 550 |
1015 | Female | 3.55 | No | 400 | 600 |
1202 | Female | 3.6 | No | 460 | 540 |
1100 | Female | 3.4 | No | 490 | 520 |
1177 | Female | 3.53 | No | 520 | 500 |
1196 | Female | 3.41 | No | 480 | 560 |
1129 | Female | 3.4 | No | 500 | 540 |
1035 | Female | 3.61 | No | 500 | 550 |
1078 | Female | 3.33 | No | 570 | 490 |
1165 | Female | 3.45 | No | 560 | 500 |
1159 | Female | 3.59 | No | 640 | 440 |
1069 | Female | 3.3 | No | 600 | 490 |
1060 | Female | 3.36 | No | 540 | 550 |
1123 | Female | 3.51 | No | 560 | 530 |
1214 | Female | 4 | No | 590 | 500 |
1089 | Female | 3.25 | Yes | 500 | 600 |
1218 | Female | 3.71 | No | 540 | 560 |
1205 | Female | 3.8 | No | 550 | 550 |
1086 | Female | 3.6 | No | 540 | 570 |
1116 | Female | 3.1 | No | 560 | 550 |
1203 | Female | 3.1 | No | 500 | 610 |
1039 | Female | 3.02 | No | 560 | 560 |
1010 | Female | 3.8 | No | 580 | 540 |
1005 | Female | 3.76 | No | 600 | 520 |
1044 | Female | 3.7 | No | 570 | 560 |
1139 | Female | 3.1 | No | 530 | 600 |
1072 | Female | 3.1 | No | 570 | 570 |
1138 | Female | 3.12 | No | 560 | 580 |
1181 | Female | 3.5 | No | 600 | 550 |
1073 | Female | 3.76 | No | 600 | 550 |
1063 | Female | 3.53 | No | 560 | 590 |
1068 | Female | 3.1 | No | 550 | 610 |
1077 | Female | 3.81 | No | 560 | 610 |
1065 | Female | 3.9 | No | 575 | 600 |
1058 | Female | 3.55 | No | 585 | 590 |
1163 | Female | 3.3 | No | 600 | 590 |
1105 | Female | 3.81 | No | 510 | 680 |
1075 | Female | 4 | No | 650 | 550 |
1067 | Female | 3.9 | No | 640 | 560 |
1057 | Female | 3.3 | No | 600 | 600 |
1115 | Female | 3.3 | No | 580 | 620 |
1168 | Female | 3.5 | No | 650 | 560 |
1081 | Female | 3.94 | No | 620 | 600 |
1142 | Female | 3.2 | No | 720 | 500 |
1052 | Female | 3.7 | No | 600 | 620 |
1219 | Female | 3.01 | No | 630 | 590 |
1020 | Female | 3.2 | No | 600 | 630 |
1082 | Female | 3.48 | No | 550 | 690 |
1144 | Female | 3.27 | No | 640 | 600 |
1046 | Female | 3.42 | No | 660 | 580 |
1033 | Female | 3.3 | No | 650 | 600 |
1134 | Female | 3.78 | No | 650 | 600 |
1102 | Female | 3.2 | No | 620 | 630 |
1148 | Female | 3.46 | No | 620 | 640 |
1031 | Female | 3.75 | No | 640 | 620 |
1199 | Female | 3.77 | No | 620 | 640 |
1004 | Female | 3.6 | No | 710 | 560 |
1174 | Female | 3.74 | No | 680 | 600 |
1215 | Female | 3.33 | No | 650 | 630 |
1204 | Female | 3.77 | No | 650 | 630 |
1110 | Female | 3.63 | No | 700 | 600 |
1096 | Female | 3.48 | No | 750 | 550 |
1197 | Female | 3.8 | No | 600 | 700 |
1207 | Female | 3.7 | No | 640 | 670 |
1179 | Female | 3.83 | No | 660 | 660 |
1038 | Female | 3.3 | No | 680 | 650 |
1149 | Female | 3.63 | No | 640 | 700 |
1023 | Female | 3.88 | No | 670 | 680 |
1018 | Female | 3.5 | No | 600 | 750 |
1120 | Female | 3.16 | No | 680 | 670 |
1118 | Female | 3.74 | No | 650 | 700 |
1094 | Female | 3.89 | No | 640 | 710 |
1055 | Female | 3.76 | No | 760 | 600 |
1011 | Female | 3.67 | Yes | 690 | 690 |
1160 | Female | 3.57 | No | 700 | 700 |
1014 | Female | 4 | No | 700 | 700 |
1201 | Female | 3.21 | Yes | 760 | 660 |
1187 | Female | 3.62 | No | 780 | 660 |
1091 | Female | 3.5 | No | 800 | 650 |
Since all columns will be used in the query, * is used to specify all columns after SELECT. The WHERE clause remains the same. In the ORDER BY clause, besides Gender, one function is used to calculate the average scores of SATM and SATV, then uses the calculation results to sort the data inside each gender group. To get the same result, could you try other SAS steps and count how many of them will be needed?
Launch and run the SAS program, and review the output to convince yourself that the data has been sorted in the desired order.
One more thing, you may notice a note in the log window when running this program.
NOTE: The query as specified involves ordering by an item that doesn't appear in its SELECT clause.
That’s because MEAN(SATM, SATV) is not listed in the SELECT clause, only in the ORDER BY clause.
32.5 - Summarizing and Grouping Data
32.5 - Summarizing and Grouping DataIn previous sections, we use the SQL procedure to generate detailed reports. Sometimes, the summarized report is also necessary for us to explore data. To do that, we will need summary functions and/or the GROUP BY clause in PROC SQL.
Many summary functions that are used in other SAS steps can also work well in PROC SQL. Below is the table of summary functions you can request:
Summary function | Description |
---|---|
AVG, MEAN | mean or average of values |
COUNT, FREQ, N | number of non-missing values |
CSS | the corrected sum of squares |
CV | coefficient of variation(percent) |
MAX | largest value |
MIN | smallest value |
NMISS | number of missing values |
PRT | probability of a greater absolute value of the student's t |
RANGE | range of values |
STD | standard deviation |
STDERR | standard error of the mean |
SUM | sum of values |
T | student's t-value for testing the hypothesis |
USS | the uncorrected sum of squares |
VAR | variance |
Note: some functions have multiple names. The first listed is the SQL name.
Next, we will work through examples to see how these functions perform calculations in PROC SQL. Along the way, the GROUP BY clause will be introduced and work with the functions.
In this section, the data from survey.sas7bdat will be used for all examples. First, make sure the file is downloaded to your computer and revise the libname as needed.
Example 32.16
The following program uses the AVG() function to calculate the mean scores of SAT math and verbal test:
PROC SQL;
select avg(SATM) as average_Math,
avg(SATV) as average_Verbal
from stat482.survey;
QUIT
average_Math | average_Verbal |
---|---|
599.0046 | 580.3256 |
First launch and run the SAS program. When checking the output you will see two overall average scores have been calculated for SATM and SATV separately. There is only one observation in the output window.
Let’s review the function in the code. In this case, either MEAN() or AVG() can be used to calculate the average. Only one argument (column) is inside the function AVG(). So the statistic is calculated across all rows for one column.
AVG(STAM)—the overall average score of SATM
AVG(STAV)—the overall average score of SATV

Quite simple, right? Let’s add one more argument to the function. Can you guess how many observations will be in the output?
Example 32.17
In the following program, two columns are the arguments of the function MEAN():
PROC SQL;
select mean(SATM, SATV) as average
from stat482.survey;
QUIT;
average |
---|
700 |
600 |
470 |
635 |
560 |
665 |
690 |
595 |
655 |
560 |
690 |
. |
515 |
700 |
500 |
620 |
650 |
675 |
660 |
615 |
450 |
650 |
675 |
665 |
620 |
560 |
575 |
605 |
680 |
450 |
630 |
350 |
625 |
650 |
525 |
645 |
450 |
665 |
560 |
. |
690 |
640 |
615 |
565 |
695 |
620 |
635 |
620 |
630 |
450 |
600 |
610 |
455 |
605 |
680 |
550 |
600 |
587.5 |
775 |
545 |
615 |
670 |
575 |
625 |
587.5 |
425 |
600 |
580 |
545 |
605 |
655 |
570 |
575 |
475 |
600 |
580 |
585 |
530 |
670 |
660 |
610 |
620 |
570 |
690 |
710 |
555 |
575 |
. |
550 |
445 |
725 |
575 |
560 |
675 |
670 |
650 |
535 |
530 |
650 |
505 |
530 |
625 |
475 |
. |
595 |
560 |
580 |
525 |
495 |
650 |
555 |
. |
600 |
530 |
600 |
555 |
525 |
675 |
635 |
675 |
475 |
590 |
545 |
435 |
490 |
645 |
625 |
610 |
520 |
640 |
765 |
420 |
500 |
625 |
585 |
625 |
610 |
570 |
565 |
570 |
. |
610 |
525 |
620 |
475 |
590 |
600 |
630 |
670 |
640 |
590 |
550 |
590 |
485 |
. |
660 |
400 |
540 |
540 |
700 |
615 |
710 |
595 |
625 |
530 |
610 |
535 |
605 |
660 |
600 |
500 |
680 |
585 |
640 |
620 |
595 |
510 |
650 |
660 |
610 |
575 |
550 |
505 |
. |
600 |
530 |
720 |
610 |
590 |
540 |
530 |
. |
500 |
620 |
555 |
520 |
650 |
525 |
630 |
620 |
710 |
500 |
555 |
640 |
550 |
625 |
655 |
475 |
580 |
625 |
610 |
525 |
425 |
545 |
640 |
640 |
510 |
550 |
610 |
480 |
600 |
595 |
. |
640 |
635 |
575 |
We changed the program a little bit. Both SATM and SATV are put inside the function as arguments. Launch and run the SAS program. You will see there are 226 observations, which is the same as in the original survey data.
If you add more than one column as arguments of summary functions, SAS will perform the calculation across the columns for each row to generate the above output.

In this case, the summary function is not performing aggregation anymore. SAS then looks for a like-named function in BASE SAS. If yes, the calculation will be performed for each row; if not, an error message will be output in the log window. You can try to change MEAN() to AVG() to see what will happen.
ERROR: Function AVG could not be located.
Example 32.18
The following program uses only one argument for MEAN(), but add one more column in the SELECT clause:
PROC SQL;
select Gender,
mean(SATM) as average_Math
from stat482.survey;
QUIT;
Gender | average_Math |
---|---|
Male | 599.0046 |
Female | 599.0046 |
Female | 599.0046 |
Female | 599.0046 |
Female | 599.0046 |
Male | 599.0046 |
Male | 599.0046 |
Male | 599.0046 |
Male | 599.0046 |
Female | 599.0046 |
Female | 599.0046 |
Female | 599.0046 |
Female | 599.0046 |
Female | 599.0046 |
Female | 599.0046 |
Male | 599.0046 |
Male | 599.0046 |
Female | 599.0046 |
Male | 599.0046 |
Female | 599.0046 |
Male | 599.0046 |
Male | 599.0046 |
Female | 599.0046 |
Male | 599.0046 |
Female | 599.0046 |
Female | 599.0046 |
Male | 599.0046 |
Male | 599.0046 |
Male | 599.0046 |
Female | 599.0046 |
Female | 599.0046 |
Male | 599.0046 |
Female | 599.0046 |
Male | 599.0046 |
Female | 599.0046 |
Male | 599.0046 |
Female | 599.0046 |
Female | 599.0046 |
Female | 599.0046 |
Female | 599.0046 |
Male | 599.0046 |
Male | 599.0046 |
Female | 599.0046 |
Female | 599.0046 |
Male | 599.0046 |
Female | 599.0046 |
Male | 599.0046 |
Male | 599.0046 |
Male | 599.0046 |
Male | 599.0046 |
Female | 599.0046 |
Female | 599.0046 |
Male | 599.0046 |
Male | 599.0046 |
Female | 599.0046 |
Male | 599.0046 |
Female | 599.0046 |
Female | 599.0046 |
Male | 599.0046 |
Female | 599.0046 |
Male | 599.0046 |
Male | 599.0046 |
Female | 599.0046 |
Male | 599.0046 |
Female | 599.0046 |
Female | 599.0046 |
Female | 599.0046 |
Female | 599.0046 |
Female | 599.0046 |
Male | 599.0046 |
Male | 599.0046 |
Female | 599.0046 |
Female | 599.0046 |
Female | 599.0046 |
Female | 599.0046 |
Female | 599.0046 |
Female | 599.0046 |
Female | 599.0046 |
Male | 599.0046 |
Male | 599.0046 |
Female | 599.0046 |
Female | 599.0046 |
Female | 599.0046 |
Male | 599.0046 |
Male | 599.0046 |
Female | 599.0046 |
Male | 599.0046 |
Male | 599.0046 |
Female | 599.0046 |
Male | 599.0046 |
Female | 599.0046 |
Male | 599.0046 |
Female | 599.0046 |
Female | 599.0046 |
Male | 599.0046 |
Female | 599.0046 |
Male | 599.0046 |
Male | 599.0046 |
Female | 599.0046 |
Female | 599.0046 |
Male | 599.0046 |
Female | 599.0046 |
Female | 599.0046 |
Male | 599.0046 |
Female | 599.0046 |
Male | 599.0046 |
Female | 599.0046 |
Female | 599.0046 |
Female | 599.0046 |
Female | 599.0046 |
Male | 599.0046 |
Female | 599.0046 |
Female | 599.0046 |
Female | 599.0046 |
Female | 599.0046 |
Female | 599.0046 |
Female | 599.0046 |
Female | 599.0046 |
Male | 599.0046 |
Female | 599.0046 |
Female | 599.0046 |
Male | 599.0046 |
Female | 599.0046 |
Male | 599.0046 |
Female | 599.0046 |
Male | 599.0046 |
Female | 599.0046 |
Female | 599.0046 |
Female | 599.0046 |
Male | 599.0046 |
Male | 599.0046 |
Male | 599.0046 |
Female | 599.0046 |
Female | 599.0046 |
Male | 599.0046 |
Female | 599.0046 |
Male | 599.0046 |
Female | 599.0046 |
Female | 599.0046 |
Male | 599.0046 |
Male | 599.0046 |
Female | 599.0046 |
Male | 599.0046 |
Female | 599.0046 |
Female | 599.0046 |
Female | 599.0046 |
Male | 599.0046 |
Female | 599.0046 |
Female | 599.0046 |
Male | 599.0046 |
Male | 599.0046 |
Male | 599.0046 |
Male | 599.0046 |
Male | 599.0046 |
Female | 599.0046 |
Male | 599.0046 |
Male | 599.0046 |
Male | 599.0046 |
Female | 599.0046 |
Female | 599.0046 |
Male | 599.0046 |
Male | 599.0046 |
Female | 599.0046 |
Female | 599.0046 |
Female | 599.0046 |
Male | 599.0046 |
Male | 599.0046 |
Female | 599.0046 |
Male | 599.0046 |
Male | 599.0046 |
Female | 599.0046 |
Male | 599.0046 |
Male | 599.0046 |
Female | 599.0046 |
Male | 599.0046 |
Male | 599.0046 |
Female | 599.0046 |
Male | 599.0046 |
Female | 599.0046 |
Male | 599.0046 |
Female | 599.0046 |
Female | 599.0046 |
Female | 599.0046 |
Male | 599.0046 |
Male | 599.0046 |
Female | 599.0046 |
Female | 599.0046 |
Female | 599.0046 |
Female | 599.0046 |
Female | 599.0046 |
Female | 599.0046 |
Female | 599.0046 |
Female | 599.0046 |
Male | 599.0046 |
Male | 599.0046 |
Female | 599.0046 |
Female | 599.0046 |
Female | 599.0046 |
Female | 599.0046 |
Male | 599.0046 |
Female | 599.0046 |
Female | 599.0046 |
Female | 599.0046 |
Female | 599.0046 |
Female | 599.0046 |
Male | 599.0046 |
Female | 599.0046 |
Female | 599.0046 |
Male | 599.0046 |
Male | 599.0046 |
Male | 599.0046 |
Male | 599.0046 |
Male | 599.0046 |
Female | 599.0046 |
Female | 599.0046 |
Female | 599.0046 |
Male | 599.0046 |
Female | 599.0046 |
Female | 599.0046 |
Male | 599.0046 |
Male | 599.0046 |
Male | 599.0046 |
Male | 599.0046 |
Male | 599.0046 |
Female | 599.0046 |
Male | 599.0046 |
In the above program, the the SELECT statement changed again. This time, only one argument is for the MEAN() function to calculate the overall average score of SAT math grades. Outside the function, another column has been selected as well. What output will it produce?
Launch and run the SAS program. You may be surprised that the output contains 226 rows. Review the output you will see two things that have been done by the above code:
- It calculated the overall average math score for all students.
- It displayed all rows in the output because Gender is not an argument of MEAN() function.
Note that the overall average math score is just repeated for each row. You can find a message like the one below in the log window. When you submit such a program, SAS calculate the statistic first. Then merge it back with other columns. That’s how “remerging” happens.
NOTE: The query requires remerging summary statistics back with the original data
The above result is not what we wanted. Now, let’s see how to use the GROUP BY clause to make it reasonable.
Example 32.19
The following example calculates the average SAT math score for each gender group:
PROC SQL;
select Gender,
mean(SATM) as average_Math
from stat482.survey
group by Gender;
QUIT;
Gender | average_Math |
---|---|
Female | 589.5082 |
Male | 611.3298 |
The above program seems identical to the program in the previous example except for one more clause: GROUP BY. Finally, we get it right and obtain the desired result: the average SAT math scores for female and male students. Of course, you can make further use of GROUP BY by adding multiple columns. Let’s find out with the next example.
Example 32.20
The following program uses both Gender and SmokeCigarettes in the GROUP BY clause to calculate the average SAT math scores:
PROC SQL;
select Gender,
SmokeCigarettes,
mean(SATM) as average_Math
from stat482.survey
group by 1, 2;
QUIT;
Gender | SmokeCigarettes | average_Math |
---|---|---|
Female | No | 589.6552 |
Female | Yes | 586.6667 |
Male | No | 613.2353 |
Male | Yes | 593.3333 |
Launch and run the SAS program, then review the output. As you can see, the average math scores are calculated for each smoking group (Yes or No) inside each gender group (Female or Male).
Just one more thing about this program, the columns can also be referred to by their locations in the SELECT clause as in the WHERE clause. Here, 1 and 2 are used to refer to Gender and SmokeCigarettes.
Next, we will pay attention to one special summary function in SQL, which is COUNT(). You can use the COUN() function to count the non-missing values.
Example 32.21
The following example count the number of rows in survey data, the number of non-missing records for math and verbal test scores, and the distinct values of gender:
PROC SQL;
select count(*) as No_obs,
count(SATM) as No_Math_records,
count(SATV) as No_Verbal_records,
count(distinct Gender) as Gender_group
from stat482.survey;
QUIT;
No_obs | No_Math_records | No_Verbal_records | Gender_group |
---|---|---|---|
226 | 216 | 215 | 2 |
The above code reveals three different common ways of using the COUNT() function.
- Count(*) is to count total number of rows in a table. COUNT() is the only function that allows you to use * as an argument.
- Count(column) is to count the number of non-missing values in a column. In the program, we count the number of non-missing values for math and verbal scores.
- Count(distinct column) is to count the total number of unique values in a column. In the above example, we count the number of gender categories.
Launch and run the SAS program, then review the output. With knowledge of some of the missing values inside the table, we are not surprised to see the first three numbers unmatched. The total number of rows in survey data is 226. The total numbers of non-missing values of math and verbal scores are 216 and 215, separately. Both numbers are less than 226, which means there are missing values in each column, and SATV has one more value missing. There are only two categories in Gender, Male and Female. So the last count is 2.
32.6 - Using the HAVING Clause
32.6 - Using the HAVING ClausePreviously we learned how to use the GROUP BY clause to group and summarize data. Sometimes, we want to select certain groups from the result. That’s when the HAVING clause comes into play.
In this section, we are going to use the salary.sas7bdat data for all examples. Download this SAS data file onto your own computer and change the libname
to be the directory where you save the data.
Example 32.22
The following program calculates the average salary for each department, then select three departments as needed in the query output:
PROC SQL;
select Department,
avg(Employee_annual_salary) as Avg_salary format=DOLLAR12.2
from stat482.salary
group by Department
having Department in ('LAW','FINANCE','FIRE')
order by Avg_salary;
QUIT;
Department | Avg_salary |
---|---|
LAW | $71,082.20 |
FINANCE | $82,184.00 |
FIRE | $90,742.33 |
Let’s review the program first. The code selects the column Department and uses the summary function AVG() to compute the average salaries. Since the GROUP BY clause also is also present in the SELECT statement, the averages are for each department. The user is only interested in three departments, Law, Finance and Fire. So we use the HAVING clause to select only these three to be output. Finally, we ask SAS to sort the data by average salaries. This program contains every clause we have learned so far except the WHERE clause, which we will address later.
Launch and run the SAS program and review the output to make sure you understand the output.
You may wonder if WHERE can do the same thing as HAVING does in the above program. You can try replacing Having with WHERE clause as following. You will get identical output as before.
PROC SQL;
select Department,
avg(Employee_annual_salary) as Avg_salary format=DOLLAR12.2
from stat482.salary
where Department in ('LAW','FINANCE','FIRE')
group by Department
order by Avg_salary;
QUIT;
However, let’s not assume that WHERE and HAVING are the same based on this. There are some big differences between them. Generally speaking, HAVING has control on grouped data during output; WHERE controls input data row by row. Let’s see more examples about these two commands.
Example 32.23
The following program calculates the average salary for each department and choose ones having more than $70,000:
PROC SQL;
select Department,
avg(Employee_annual_salary) as Avg_salary format=DOLLAR12.2
from stat482.salary
group by Department
having Avg_salary > 70000
order by Avg_salary;
QUIT;
Department | Avg_salary |
---|---|
LAW | $71,082.20 |
BOARD OF ELECTION | $74,988.00 |
HEALTH | $75,066.86 |
TRANSPORTN | $79,438.18 |
POLICE | $81,850.26 |
FINANCE | $82,184.00 |
WATER MGMNT | $84,780.42 |
PROCUREMENT | $89,236.00 |
COMMUNITY DEVELOPMENT | $90,096.00 |
DoIT | $90,252.00 |
FIRE | $90,742.33 |
ADMIN HEARNG | $91,980.00 |
BUILDINGS | $94,793.01 |
Only a small change has been made to this program. The condition in the HAVING clause changed the department average salary more than $70,000. So, the expression used in the HAVING statement is a summary function. And, the data is sorted by average values.
Launch and run the SAS program and review the output. As we expect, all departments having more than $70,000 average salary are listed as the query result.
Next, let’s try using WHERE to perform the same task.
PROC SQL;
select Department,
avg(Employee_annual_salary) as Avg_salary format=DOLLAR12.2
from stat482.salary
where calculated Avg_salary > 70000
group by Department
order by Avg_salary;
QUIT;
You must remember that to use the computed result in the WHERE clause, the keyword “CALCULATED” should be inserted. Oops! SAS gives us an error message like this:
ERROR: Summary functions are restricted to the SELECT and HAVING clauses only.
This example illustrates a big difference between HAVING and WHERE. The summary functions can be used in a HAVING clause but not in a WHERE clause, because HAVING works on grouped data, but WHERE evaluates existing or calculated data row by row.
Based on our current experiences with these two clauses, you might prefer to use HAVING since it can be used for both situations. However, don’t rush to this conclusion either. You will find out more in the next example.
Example 32.24
The following two SAS program are similar. The only difference is that the first program uses a WHERE clause and the second program uses a HAVING clause. They try to accomplish the same task: count how many employees at each position inside Police Department:
PROC SQL;
select Position_Title,
count(*) as Employees
from stat482.salary
where Department='POLICE'
group by Position_Title;
QUIT;
PROC SQL;
select Position_Title,
count(*) as Employees
from stat482.salary
group by Position_Title
having Department='POLICE';
QUIT;
Position Title | Employees |
---|---|
ACCOUNTANT II | 1 |
CLINICAL THERAPIST III | 1 |
CROSSING GUARD | 5 |
CROSSING GUARD - PER AGREEMENT | 3 |
DIR OF POLICE RECORDS | 1 |
FISCAL ADMINISTRATOR | 1 |
POLICE OFFICER | 85 |
POLICE OFFICER (ASSIGNED AS DETECTIVE) | 13 |
POLICE OFFICER / FLD TRNG OFFICER | 1 |
SENIOR DATA ENTRY OPERATOR | 2 |
SERGEANT | 11 |
Position Title | Employees |
---|---|
ACCOUNTANT II | 1 |
CLINICAL THERAPIST III | 2 |
CROSSING GUARD | 5 |
CROSSING GUARD | 5 |
CROSSING GUARD | 5 |
CROSSING GUARD | 5 |
CROSSING GUARD | 5 |
CROSSING GUARD - PER AGREEMENT | 3 |
CROSSING GUARD - PER AGREEMENT | 3 |
CROSSING GUARD - PER AGREEMENT | 3 |
DIR OF POLICE RECORDS | 1 |
FISCAL ADMINISTRATOR | 1 |
POLICE OFFICER | 85 |
POLICE OFFICER | 85 |
POLICE OFFICER | 85 |
POLICE OFFICER | 85 |
POLICE OFFICER | 85 |
POLICE OFFICER | 85 |
POLICE OFFICER | 85 |
POLICE OFFICER | 85 |
POLICE OFFICER | 85 |
POLICE OFFICER | 85 |
POLICE OFFICER | 85 |
POLICE OFFICER | 85 |
POLICE OFFICER | 85 |
POLICE OFFICER | 85 |
POLICE OFFICER | 85 |
POLICE OFFICER | 85 |
POLICE OFFICER | 85 |
POLICE OFFICER | 85 |
POLICE OFFICER | 85 |
POLICE OFFICER | 85 |
POLICE OFFICER | 85 |
POLICE OFFICER | 85 |
POLICE OFFICER | 85 |
POLICE OFFICER | 85 |
POLICE OFFICER | 85 |
POLICE OFFICER | 85 |
POLICE OFFICER | 85 |
POLICE OFFICER | 85 |
POLICE OFFICER | 85 |
POLICE OFFICER | 85 |
POLICE OFFICER | 85 |
POLICE OFFICER | 85 |
POLICE OFFICER | 85 |
POLICE OFFICER | 85 |
POLICE OFFICER | 85 |
POLICE OFFICER | 85 |
POLICE OFFICER | 85 |
POLICE OFFICER | 85 |
POLICE OFFICER | 85 |
POLICE OFFICER | 85 |
POLICE OFFICER | 85 |
POLICE OFFICER | 85 |
POLICE OFFICER | 85 |
POLICE OFFICER | 85 |
POLICE OFFICER | 85 |
POLICE OFFICER | 85 |
POLICE OFFICER | 85 |
POLICE OFFICER | 85 |
POLICE OFFICER | 85 |
POLICE OFFICER | 85 |
POLICE OFFICER | 85 |
POLICE OFFICER | 85 |
POLICE OFFICER | 85 |
POLICE OFFICER | 85 |
POLICE OFFICER | 85 |
POLICE OFFICER | 85 |
POLICE OFFICER | 85 |
POLICE OFFICER | 85 |
POLICE OFFICER | 85 |
POLICE OFFICER | 85 |
POLICE OFFICER | 85 |
POLICE OFFICER | 85 |
POLICE OFFICER | 85 |
POLICE OFFICER | 85 |
POLICE OFFICER | 85 |
POLICE OFFICER | 85 |
POLICE OFFICER | 85 |
POLICE OFFICER | 85 |
POLICE OFFICER | 85 |
POLICE OFFICER | 85 |
POLICE OFFICER | 85 |
POLICE OFFICER | 85 |
POLICE OFFICER | 85 |
POLICE OFFICER | 85 |
POLICE OFFICER | 85 |
POLICE OFFICER | 85 |
POLICE OFFICER | 85 |
POLICE OFFICER | 85 |
POLICE OFFICER | 85 |
POLICE OFFICER | 85 |
POLICE OFFICER | 85 |
POLICE OFFICER | 85 |
POLICE OFFICER | 85 |
POLICE OFFICER | 85 |
POLICE OFFICER | 85 |
POLICE OFFICER (ASSIGNED AS DETECTIVE) | 13 |
POLICE OFFICER (ASSIGNED AS DETECTIVE) | 13 |
POLICE OFFICER (ASSIGNED AS DETECTIVE) | 13 |
POLICE OFFICER (ASSIGNED AS DETECTIVE) | 13 |
POLICE OFFICER (ASSIGNED AS DETECTIVE) | 13 |
POLICE OFFICER (ASSIGNED AS DETECTIVE) | 13 |
POLICE OFFICER (ASSIGNED AS DETECTIVE) | 13 |
POLICE OFFICER (ASSIGNED AS DETECTIVE) | 13 |
POLICE OFFICER (ASSIGNED AS DETECTIVE) | 13 |
POLICE OFFICER (ASSIGNED AS DETECTIVE) | 13 |
POLICE OFFICER (ASSIGNED AS DETECTIVE) | 13 |
POLICE OFFICER (ASSIGNED AS DETECTIVE) | 13 |
POLICE OFFICER (ASSIGNED AS DETECTIVE) | 13 |
POLICE OFFICER / FLD TRNG OFFICER | 1 |
SENIOR DATA ENTRY OPERATOR | 4 |
SENIOR DATA ENTRY OPERATOR | 4 |
SERGEANT | 11 |
SERGEANT | 11 |
SERGEANT | 11 |
SERGEANT | 11 |
SERGEANT | 11 |
SERGEANT | 11 |
SERGEANT | 11 |
SERGEANT | 11 |
SERGEANT | 11 |
SERGEANT | 11 |
SERGEANT | 11 |
Now, Launch and run both programs. The output on the top is from the program using WHERE clause; the output on the bottom is the partial output from the program using HAVING clause.
You might be surprised to see how different these two results are. One would expect a result like the output on the top. But the output on the bottom has so many more rows, and even some numbers do not match! Let’s review the code to understand what happened. There are two columns in the SELECT clause, Position_Title and a summary function, count(*), which counts total number of rows for each position group since we specify Position_Title in the GROUP BY clause. Unlike the programs in the previous example, the expression used inside WHERE and HAVING references another column, Department, which is not in the SELECT clause. Therefore, SAS handles them differently in the two programs.
The first program uses the WHERE clause. Since SAS processes the WHERE clause before SELECT and on a row-by-row basis, the records from Police department are selected from the data first. Then SAS counts the number of employees under each position title inside the department. For example, there is only one person who is a “CLINICAL THERAPIST III” in the Police Department. So the count is 1. We obtained the desired output.
On the other hand, the second program uses the HAVING clause. It is equivalent to the following program but without Department column in the output:
PROC SQL;
select Position Title,
Department,
count(*) as employees
from stat482.salary
group by Position_Title
having Department='POLICE';
QUIT;
In this program, SAS counts employee numbers on each position across all departments because of GROUP BY clause. For example, there is each one person titled “CLINICAL THERAPIST III” in POLICE department and HEALTH department. So the total count on this position is 2. Since there is an extra column in SELECT clause besides the summary function and a GROUP BY column, all rows are in the output with counts on each job position. For instance, under position title “CLINICAL THERAPIST III”, both records have 2 as value of “Employees”. At last, SAS evaluates the condition (Department=POLICE) in HAVING clause to select rows for the output. That’s why you see Employees=2 for position title “CLINICAL THERAPIST III” in the output from the second query.
We have seen two examples that show the differences between HAVING and WHERE so far. Since SAS handles them so differently, when it comes to WHERE or HAVING, pick one that fits your needs the best.
Last but not the least, let’s check out one more cool feature of HAVING clause.
Example 32.25
The following program selects the departments whose average salary is lower than the overall salary level:
PROC SQL;
select Department,
avg(Employee_annual_salary) as Avg_salary format=DOLLAR12.2
from stat482.salary
group by Department
having Avg_salary < (select avg(Employee_annual_salary) from stat482.salary)
order by Avg_salary;
QUIT;
Department | Avg_salary |
---|---|
DISABILITIES | $36,264.00 |
OEMC | $49,116.80 |
FAMILY & SUPPORT | $53,642.00 |
PUBLIC LIBRARY | $59,030.00 |
GENERAL SERVICES | $65,600.80 |
BUSINESS AFFAIRS | $65,652.00 |
CITY COUNCIL | $66,983.00 |
AVIATION | $67,704.48 |
STREETS & SAN | $68,625.08 |
LAW | $71,082.20 |
BOARD OF ELECTION | $74,988.00 |
HEALTH | $75,066.86 |
Going through this program, you may not find anything unusual until HAVING clause. Inside the clause it’s not a standard expression as before, but a query:
(select avg(Employee_annual_salary) from stat482.salary)
Such kind of query is called subquery, inner query or nested query. You can use this query-expression in a HAVING or WHERE clause. The subquery used in this example is to calculate the overall average salary. The result is compared with average salaries of each department. Then SAS evaluates the condition “Less than” in HAVING clause to select departments who have less average salaries to output.
Launch and run the SAS program, and review the query result. Convince yourself that the departments’ information has been selected as described.
32.7 - Querying Multiple Tables
32.7 - Querying Multiple TablesSo far, all the examples in this lesson are querying a single table. However, as a matter of fact, you can specify multiple tables in the FROM clause. Querying more than one table at a time makes PROC SQL even more powerful in data manipulation.
The following examples use two tables:
Survey Data (survey.sas7bdat) contains:
ID, Gender, GPA, SmokeCigarrets, SATM, SATV
id | Gender | GPA | SmokeCig | SATM | SATV |
---|---|---|---|---|---|
1001 | Male | 2.67 | No | 700 | 700 |
1002 | Female | 2.98 | No | 700 | 500 |
1003 | Female | 2.67 | No | 470 | 470 |
1004 | Female | 3.6 | No | 710 | 560 |
1005 | Female | 3.76 | No | 600 | 520 |
1006 | Male | 3.86 | No | 610 | 720 |
1007 | Male | 3.94 | No | 710 | 670 |
1008 | Male | 2.8 | Yes | 610 | 580 |
1009 | Male | 3.48 | No | 690 | 620 |
Survey2 Data (survey2.sas7bdat) contains:
ID, Seating, DiveInfluence, Height, Weight
id | Seating | DriverInfluen | Height | Weight |
---|---|---|---|---|
1001 | Middle | No | 68 | 190 |
1002 | Middle | No | 54 | 110 |
1003 | Middle | No | 65 | 225 |
1004 | Middle | No | 52 | 135 |
1005 | Back | No | 72 | 128 |
1006 | Middle | No | 70 | 188 |
1007 | Back | No | 70 | 155 |
1008 | Middle | Yes | 68 | 160 |
1009 | Front | No | 72 | 160 |
Download these two tables if you have not done so. Revise the libname
to reflect the directory where you save the files.
Example 32.26
The following program attempts to get demographic information about students from two separate tables, survey, and survey2:
PROC SQL;
create table demo_info as
select ID,
Gender,
Height,
Weight
from stat482.survey, stat482.survey2;
QUIT;

Let’s review the code. In this SQL procedure, we used the CREATE TABLE clause to save and name the new table as demo_info
. The subsequent SELECT clause chooses ID, gender, height, and weight columns from two tables. In FROM clause, two tables’ names are listed.
Launch and run the SAS program. You should expect no result in the output window because the CREATE TABLE clause suppresses output. On the other hand, check the log window and you will find the error message: “Ambiguous reference, column ID is in more than one table”.
ERROR: Ambiguous reference, column ID is in more than one table.
As you observed two tables, the ID is in both tables and contains the same information. If a column in the SELECT statement appears in multiple tables, the table it is chosen from has to be specified by adding the table’s name in front as this:
Table.Column
So to make it right, we revise the previous program a little bit: change ID to survey.ID, which means that we use ID from survey data. The other change is the tables’ names. You can give any table an alias with or without the keyword AS after its original name. In the following program, we use S1 for survey data and S2 to survey2 data. And as you can see, it’s okay to use one level alias even for a permanent file. This makes life easier! In this way, ID can be specified as S1.ID.
PROC SQL;
create table demo_info as
select s1.ID,
Gender,
Height,
Weight
from stat482.survey as s1, stat482.survey2 as s2;
QUIT;
Everything seems good. Now launch and run the SAS program. As before, there is no output because of the CREATE TABLE statement. Check the log file in which there are two notes that need your attention.
NOTE: The execution of this query involves performing one or more Cartesian product joins that can not be optimized.
NOTE: Table WORK.DEMO_INFO created, with 51076 rows and 4 columns.
The first is “ The execution of this query involves performing one or more Cartesian product joins that can not be optimized”. What is a Cartesian product? It refers to a query result in which each row in the first table is combined with every row in the second table. If you specify multiple tables in FROM clause but do not use a WHERE clause to choose needed rows, a Cartesian product is generated. For example,
If we submit the following program:
PROC SQL;
Select *
from table1, table2;
Table 1 has 3 rows; Table 2 has 3 rows as well. Their Cartesian product contains (3*3)9 rows.
Table1
name | value1 |
---|---|
x | 1 |
y | 2 |
z | 3 |
Table2
name | value2 |
---|---|
A | 4 |
B | 5 |
C | 6 |
Result:
name | value1 | name | value2 |
---|---|---|---|
x | 1 | A | 4 |
x | 1 | B | 5 |
x | 1 | C | 6 |
y | 2 | A | 4 |
y | 2 | B | 5 |
y | 2 | C | 6 |
z | 3 | A | 4 |
z | 3 | B | 5 |
z | 3 | C | 6 |
In the program for this example, there is no WHERE clause. So SAS generated a Cartesian product and gave you the note. Both Survey and Survey2 have 226 rows in the table. The query should have (226*226) = 51076 rows as the result. That’s why you got the other note, “Table Work.demo_info created, with 51076 rows and 4 columns.” Clearly, this can’t be correct. How do we get the desired result? Let’s make a final push.
Example 32.27
The following program selects the demographic information of students (ID, gender, height, and weight) from two tables, survey and survey2:
PROC SQL;
create table demo_info as
select s1.ID,
Gender,
Height,
Weight
from stat482.survey as s1, stat482.survey2 as s2
where s1.ID = s2.ID;
select *
from demo_info;
QUIT;
id | Gender | Height | Weight |
---|---|---|---|
1001 | Male | 67 | 190 |
1002 | Female | 54 | 110 |
1003 | Female | 65 | 225 |
1004 | Female | 52 | 135 |
1005 | Female | 72 | 128 |
1006 | Male | 70 | 188 |
1007 | Male | 70 | 155 |
1008 | Male | 68 | 160 |
1009 | Male | 72 | 160 |
1010 | Female | 52 | 117 |
1011 | Female | 64 | 120 |
1012 | Female | 65 | 130 |
1013 | Female | 65 | 120 |
1014 | Female | 67 | 125 |
1015 | Female | 62 | 129 |
1016 | Male | 70 | 165 |
1017 | Male | 68 | 165 |
1018 | Female | 68 | 125 |
1019 | Male | 65 | 180 |
1020 | Female | 68 | 160 |
1021 | Male | 65 | 135 |
1022 | Male | 73 | 168 |
1023 | Female | 65 | 130 |
1024 | Male | 72 | 170 |
1025 | Female | 63 | 110 |
1026 | Female | 63 | 155 |
1027 | Male | 68 | 155 |
1028 | Male | 73 | 160 |
1029 | Male | 69 | 155 |
1030 | Female | 54 | 120 |
1031 | Female | 70 | 132 |
1032 | Male | 62 | 200 |
1033 | Female | 64 | 155 |
1034 | Male | 70 | 170 |
1035 | Female | 65 | 155 |
1036 | Male | 72 | 175 |
1037 | Female | 63 | 130 |
1038 | Female | 67 | 123 |
1039 | Female | 64 | 125 |
1040 | Female | 68 | 140 |
1041 | Male | 75 | 215 |
1042 | Male | 68 | 185 |
1043 | Female | 63 | 130 |
1044 | Female | 61 | 210 |
1045 | Male | 68 | 145 |
1046 | Female | 65 | 120 |
1047 | Male | 74 | 165 |
1048 | Male | 74 | 182 |
1049 | Male | 70 | 175 |
1050 | Male | 68 | 170 |
1051 | Female | 65 | 135 |
1052 | Female | 69 | 150 |
1053 | Male | 75 | 184 |
1054 | Male | 73 | 230 |
1055 | Female | 68 | 120 |
1056 | Male | 69 | 165 |
1057 | Female | 53 | 150 |
1058 | Female | 67 | 143 |
1059 | Male | 72 | 175 |
1060 | Female | 56 | 130 |
1061 | Male | 69 | 195 |
1062 | Male | 72 | 165 |
1063 | Female | 66 | 135 |
1064 | Male | 72 | 200 |
1065 | Female | 63 | 113 |
1066 | Female | 69 | 125 |
1067 | Female | 67 | 150 |
1068 | Female | 68 | 132 |
1069 | Female | 68 | 140 |
1070 | Male | 68 | 155 |
1071 | Male | 70 | 180 |
1072 | Female | 64 | 133 |
1073 | Female | 64 | 125 |
1074 | Female | 64 | 150 |
1075 | Female | 63 | 112 |
1076 | Female | 62 | 130 |
1077 | Female | 66 | 125 |
1078 | Female | 64 | 180 |
1079 | Male | 70 | 150 |
1080 | Male | 69 | 145 |
1081 | Female | 68 | 150 |
1082 | Female | 71 | 174 |
1083 | Female | 63 | 114 |
1084 | Male | 74 | 140 |
1085 | Male | 72 | 200 |
1086 | Female | 63 | 145 |
1087 | Male | 71 | 168 |
1088 | Male | 57 | 240 |
1089 | Female | 60 | 140 |
1090 | Male | 64 | 150 |
1091 | Female | 63 | 105 |
1092 | Male | 68 | 147 |
1093 | Female | 62 | 115 |
1094 | Female | 64 | 115 |
1095 | Male | 76 | 190 |
1096 | Female | 67 | 180 |
1097 | Male | 69 | 132 |
1098 | Male | 67 | 155 |
1099 | Female | 65 | 135 |
1100 | Female | 64 | 120 |
1101 | Male | 58 | 210 |
1102 | Female | 66 | 175 |
1103 | Female | 75 | 125 |
1104 | Male | 71 | 184 |
1105 | Female | 78 | 135 |
1106 | Male | 68 | 165 |
1107 | Female | 68 | 135 |
1108 | Female | 64 | 105 |
1109 | Female | 67 | 150 |
1110 | Female | 65 | 124 |
1111 | Male | 70 | 200 |
1112 | Female | 65 | 130 |
1113 | Female | 68 | 160 |
1114 | Female | 59 | 190 |
1115 | Female | 63 | 120 |
1116 | Female | 68 | 142 |
1117 | Female | . | . |
1118 | Female | 62 | 130 |
1119 | Male | 73 | 180 |
1120 | Female | 68 | 155 |
1121 | Female | 63 | 190 |
1122 | Male | 69 | 138 |
1123 | Female | 66 | 120 |
1124 | Male | 73 | 180 |
1125 | Female | 59 | 100 |
1126 | Male | 72 | 160 |
1127 | Female | 69 | 145 |
1128 | Female | 56 | 129 |
1129 | Female | 59 | 110 |
1130 | Male | 72 | 180 |
1131 | Male | 66 | 145 |
1132 | Male | 75 | 267 |
1133 | Female | 61 | 120 |
1134 | Female | 66 | 135 |
1135 | Male | 72 | 195 |
1136 | Female | 84 | 115 |
1137 | Male | 69 | 200 |
1138 | Female | 72 | 137 |
1139 | Female | 62 | 125 |
1140 | Male | 70 | 165 |
1141 | Male | 73 | 175 |
1142 | Female | 65 | 110 |
1143 | Male | 72 | 180 |
1144 | Female | 65 | 140 |
1145 | Female | 67 | 155 |
1146 | Female | 64 | 160 |
1147 | Male | 71 | 165 |
1148 | Female | 62 | 117 |
1149 | Female | 67 | 128 |
1150 | Male | 73 | 195 |
1151 | Male | 75 | 190 |
1152 | Male | 67 | 122 |
1153 | Male | 69 | 160 |
1154 | Male | 69 | 133 |
1155 | Female | 98 | 160 |
1156 | Male | 75 | 190 |
1157 | Male | 81 | 290 |
1158 | Male | 70 | 150 |
1159 | Female | 67 | 150 |
1160 | Female | 68 | 170 |
1161 | Male | 74 | 180 |
1162 | Male | 68 | 136 |
1163 | Female | 69 | 135 |
1164 | Female | 67 | 165 |
1165 | Female | 64 | 130 |
1166 | Male | 74 | 173 |
1167 | Male | 66 | 140 |
1168 | Female | 67 | 157 |
1169 | Male | 71 | 165 |
1170 | Male | 72 | 160 |
1171 | Female | 62 | 145 |
1172 | Male | 70 | 175 |
1173 | Male | 70 | 135 |
1174 | Female | 68 | 145 |
1175 | Male | 71 | 155 |
1176 | Male | 68 | 175 |
1177 | Female | 71 | 125 |
1178 | Male | 78 | 210 |
1179 | Female | 62 | 114 |
1180 | Male | 73 | 155 |
1181 | Female | 67 | 105 |
1182 | Female | 68 | 140 |
1183 | Female | 66 | 150 |
1184 | Male | 73 | 180 |
1185 | Male | 72 | 165 |
1186 | Female | 66 | 189 |
1187 | Female | 61 | 115 |
1188 | Female | 66 | 115 |
1189 | Female | 68 | 120 |
1190 | Female | 106 | 170 |
1191 | Female | 58 | 170 |
1192 | Female | 73 | 118 |
1193 | Female | 64 | 126 |
1194 | Male | 71 | 175 |
1195 | Male | 68 | 170 |
1196 | Female | 64 | 128 |
1197 | Female | 63 | 130 |
1198 | Female | 67 | 125 |
1199 | Female | 68 | 140 |
1200 | Male | 68 | 155 |
1201 | Female | 67 | 175 |
1202 | Female | 62 | 105 |
1203 | Female | 67 | 160 |
1204 | Female | 65 | 105 |
1205 | Female | 65 | 130 |
1206 | Male | 69 | 135 |
1207 | Female | 63 | 112 |
1208 | Female | 72 | 115 |
1209 | Male | 72 | 190 |
1210 | Male | 70 | 165 |
1211 | Male | 72 | 170 |
1212 | Male | 75 | 230 |
1213 | Male | 72 | 157 |
1214 | Female | 64 | 98 |
1215 | Female | 65 | 150 |
1216 | Female | 65 | 200 |
1217 | Male | 71 | 154 |
1218 | Female | 62 | 135 |
1219 | Female | 60 | 115 |
1220 | Male | 69 | 215 |
1221 | Male | 69 | 160 |
1222 | Male | 67 | 170 |
1223 | Male | 71 | 155 |
1224 | Male | 60 | 170 |
1225 | Female | 75 | 148 |
1226 | Male | 69 | 151 |
Let’s check through the code. Only one more clause has been added to the query, WHERE. We use the WHERE clause to subset the whole Cartesian product by only selecting the rows with matched ID numbers. Note that the column names in the WHERE clause do not have to be the same. At last, to be able to check the table in person, another query is added to display the data in the output window.
Launch and run the SAS program, and review the log file and the output.
NOTE: Table WORK.DEMO_INFO creates, with 226 rows and 4 columns.
Finally, we got what we want. As you can see from the query result, it’s like combining two columns from each table horizontally. SAS also calls it join. In this particular case, since we only chose the matched rows, it’s also called the inner join. Such a type of join is very similar to Merge By in the DATA step but requires less computing resources and less coding. There are other types of join and data union (a vertical combination of rows) in PROC SQL which are beyond this lesson’s scope. If you are interested, you can explore them yourself with the foundation of this lesson!
32.8 - Summary
32.8 - SummaryIn this lesson, we’ve learned the basics of PROC SQL and how to use each clause of the SELECT statement to generate a query.
The homework for this lesson will give you more practice with the SQL procedure so that you become even more familiar with how it works and can use it in your own SAS programming.