Einführung in die Prozedur SQL

Werbung
Dr. Andreas Christmann
Universität Dortmund, HRZ, 04.06.1999
"!
Inhalt
1.
WAS IST SQL ? ....................................................................................................................2
2.
WAS IST PROC SQL ? .........................................................................................................2
3.
WAS KANN PROC SQL ?.....................................................................................................2
4.
BEISPIELE ZUR VERWENDUNG VON PROC SQL ...........................................................4
4.1
Fiktiver Beispieldatensatz......................................................................................................................................4
4.2
Einfache Tabellen ..................................................................................................................................................6
4.3
Subsets mit WHERE..............................................................................................................................................8
4.4
Subsets mit HAVING.............................................................................................................................................9
4.5
JOIN : Zusammenfügung von Tabellen .............................................................................................................. 10
4.6
CREATE: Erzeugung neuer Tabellen.................................................................................................................. 20
4.7
INSERT und SET: Einfügung neuer Beobachtungen ......................................................................................... 21
4.8
UPDATE und SET: Änderung von Variablen oder einzelner Werte ................................................................. 22
4.9
ALTER und ADD: Einfügen neuer Variablen .................................................................................................... 24
4.10
4.10.1
4.10.2
4.10.3
5.
PROC SQL Pass-Through Facility .................................................................................................................. 25
Daten stehen in einer SAS-Datei .................................................................................................................... 25
Verwendung von SAS/ACCESS .................................................................................................................... 26
Verwendung der PROC SQL Pass-Through Facility....................................................................................... 27
LITERATUR.......................................................................................................................28
Beachten Sie bitte, daß für die angegebenen Texte, Programme und Beispiele selbstverständlich keinerlei
Garantie und Gewährleistung übernommen wird. Der verwendete Beispieldatensatz ist rein fiktiv.
1. Was ist SQL ?
SQL steht für Structured Query Language. SQL ist eine standardisierte, weitverbreitete Sprache, um in
Tabellen und Datenbanken Abfragen durchzuführen oder den Datenbestand zu aktualisieren.
2. Was ist PROC SQL ?
PROC SQL ist die SQL-Implementation von SAS.
PROC SQL ist Bestandteil des Moduls SAS/Base und kann für alle SAS-Datendateien verwendet werden.
PROC SQL kann insbesondere für Datenbankabfragen und einfachere Reports eine Alternative zu der
SAS Hochsprache im DATA-Step oder zu SAS-Prozeduren sein.
Viele Elemente der SAS-Hochsprache wie
- globale Befehle
- DATA SET Optionen
- Funktionen, und
- INFORMAT- und FORMAT-Befehle
können in PROC SQL wie in anderen SAS-Prozeduren verwendet werden.
Jedoch sind mit PROC SQL kompliziertere statistische Verfahren nicht durchführbar.
3. Was kann PROC SQL ?
PROC SQL kann verwendet werden für
-
Erzeugung von Reports
-
Berechnung statistischer Kennzahlen wie z.B.
Anweisung
COUNT, FREQ, N
NMISS
SUM
MEAN, AVG
MIN
MAX
RANGE
VAR
STD
STDERR
CV
T
PRT
Kennzahl
Anzahl (ohne fehlende Werte)
Anzahl fehlender Werte
Summe
Mittelwert
Minimum
Maximum
Range (Maximum – Minimum)
Varianz
Standardabweichung
Standardfehler
Variationskoeffizient (in Prozent)
Teststatistik für Student’s t-Test für die
Nullhypothese, daß der Erwartungswert gleich 0 ist
p-Wert für zweiseitigen Student’s t-Test
-
Datenbankabfragen
-
Sortierung der Ausgaben
-
Zusammenfügen von Daten aus verschiedenen Tabellen
-
Erzeugen von Tabellen oder Ansichten (Views)
-
Modifizierung bzw. Update von Datenwerten in PROC SQL-Tabellen
-
Modifizierung von PROC SQL-Tabellen durch Hinzufügung, Änderung oder Löschung von
Variablen (Spalten)
-
Modifizierung bzw. Update von DBMS-Tabellen (Data Base Management System) mittels
SAS/ACCESS Views oder mit der PROC SQL Pass-Through facility
Auf die Angabe der gesamten Syntax von PROC SQL wird hier verzichtet und auf die entsprechenden
SAS-Manuals verwiesen. Online kann mittels HELP → PROC SQL unter dem Eintrag SYNTAX die
Syntax dieser Prozedur nachgeschaut werden, deren wesentliche Anweisungen in der folgenden Tabelle
aufgelistet sind. Durch Anklicken der einzelnen Befehle öffnen sich Untermenüs.
PROC SQL <option-list>;
ALTER TABLE alter-statement;
CREATE create-statement;
DELETE delete-statement;
DESCRIBE describe-statement;
Aufruf der Prozedur
Hinzufügen oder Löschen von Variablen
Erzeugung von Tabellen
Löscht Zeilen von Tabellen, meist in Verbindung mit WHERE
Druckt SQL CREATE TABLE Befehle zur Erzeugung der
Tabelle. Sinnvoll beim Transfer in andere DBMS
DROP drop-statement;
Löscht Tabellen
INSERT insert-statement;
Erstellt neue Zeilen in neuen oder existierenden Tabellen
RESET <option-list>;
Einstellung von Optionen
SELECT select-statement;
Führt die eigentliche Abfrage durch, formatiert den Report,
erstellt den Report im SAS-Output-Fenster
UPDATE update-statement;
Modifiziert die Datenwerte in einer Spalte in existierenden
Zeilen einer Tabelle
VALIDATE validate-statement; Prüft die syntaktische Korrektheit einer SQL-Abfrage, ohne
diese Abfrage durchzuführen
Ebenfalls mittels HELP PROC SQL ist eine Online-Hilfe verfügbar zu den folgenden Einträgen:
Macro variables set by PROC SQL statements
Components of the PROC SQL statements
DICTIONARY tables
CALCULATED keyword
SQL Procedure Pass-Through Facility
4. Beispiele zur Verwendung von PROC SQL
4.1
Fiktiver Beispieldatensatz
1
***************************************************************************;
2
* Beispiele zur Verwendung von PROC SQL in SAS Version 6.12 Windows
*;
3
* Andreas Christmann, 01.06.1999
*;
4
* Fiktiver Datensatz, keine Gewaehr
*;
5
***************************************************************************;
6
OPTIONS NOCENTER LINESIZE=143 PAGESIZE=40 NODATE; RUN;
7
LIBNAME saskurs "d:\saskurs";
NOTE: Libref SASKURS was successfully assigned as follows:
Engine:
V612
Physical Name: d:\saskurs
7
RUN;
8
PROC FORMAT;
9
VALUE geschlf
10
1="weiblich"
11
2="männlich"
12
.="k.A.";
NOTE: Format GESCHLF has been output.
13
VALUE schadf
14
0="nein"
15
1="ja"
16
.="k.A.";
NOTE: Format SCHADF has been output.
17
RUN;
NOTE: The PROCEDURE FORMAT used 0.28 seconds.
18
DATA saskurs.dat1;
19
INPUT id Name $12. Vorname $12. Geschl Gebdat Geld VSumme;
20
LABEL id="ID" Name="Name" Vorname="Vorname" Geschl="Geschlecht"
21
Gebdat="Geburtsdatum" Geld="Geld" VSumme="Vers.Summe";
22
INFORMAT Gebdat ddmmyy10.;
23
FORMAT Geschl geschlf. Geld 9.0 Gebdat ddmmyy10.;
24
CARDS;
NOTE: The data set SASKURS.DAT1 has 12 observations and 7 variables.
NOTE: The DATA statement used 0.28 seconds.
37
;
38
RUN;
39
TITLE1 "Verwendeter fiktiver Beispieldatensatz"; RUN;
40
PROC PRINT LABEL; ID id; RUN;
NOTE: The PROCEDURE PRINT used 0.1 seconds.
#%$%& '($ ) *+$ ,+$+&
-+.+/ ,+. 0+$+&"1 $ . 2 3 . $ 4 *+5 ,+$ ) 2 5 ,+6
8 9;: 5 <+$
#%=%& ) 5 <+$
>+$+2 ?+@ 4 $ ? @ ,;> $+A B+& ,%2 * 5 ,+B <
7GF+? @ < . , 6
HE) *%& $ 5
'($ .+A 4 . ? @
I(7 J 7 7+J 7 K L%7
N;F+? @ < . , 6
O+& 5 ) /%P Q , ,+=R<+S ) ) 4 . ? @
7 7 J 7 NEJ 7 K L N
MU1 5+& = )
H(4 -%& $ *
<+S ) ) 4 . ? @
7 7 J I V(J 7 K W%7
TUX $ ,+6 = 4 *
HE) *%& $ 5+2
<+S ) ) 4 . ? @
I(7 J I YEJ 7 K L T
W[Z 5 ) \
HE)+] 5
'($ .+A 4 . ? @
I(7 J I YEJ 7 K L L
L^HE) *(& $ = , ,+.C_ 5%& . 5
<+S ) ) 4 . ? @
I(7 J I YEJ 7 K W V
VC>+5 B * .
HE)+] 5
'($ .+A 4 . ? @
7 7 J I TEJ 7 K L%7
YU1 5+& = )
_ 5%& . 5
'($ .+A 4 . ? @
7 N(J I TEJ 7 K L N
K;>+5 B * .
O+& . ,+6
<+S ) ) 4 . ? @
7 M(J I TEJ 7 K W M
7 IU_ = $ 4 4 $+&
HE) *%& $ 5+2
<+S ) ) 4 . ? @
I(7 J I TEJ 7 K L W
7 7^_ = $ 4 4 $+&
HE) *%& $ 5+2
<+S ) ) 4 . ? @
D
7 N;F ,%& B ) 6
`%@ = <+5 2
<+S ) ) 4 . ? @
7 T(J I V(J 7 K L L
> $ 4 *C#%$+& 2ED F%B < < $
MIII
7II
TIII
LII
WIII
7VII
7WII
7II
7MII
WI
NLII
MII
WMII
VII
TIIIII
TIII
MIII
TWI
7IIIIII
MIIII
7II
D
VIIIII
7WIII
7
41
42
PROC CONTENTS DATA=saskurs.dat1;
RUN;
NOTE: The PROCEDURE CONTENTS used 0.1 seconds.
a%b%c d(b e f+b g+b+c
h+i+j g+i k+b+c"l b i m n i b o f+p g+b e m p g+q
s t+u v+w u v xzy { t s+w | } { w
| p g p"x+b gzu p ~ b€x +x+‚ } { x€ƒ | %v%„
t%… m b%c k+p g+i † e mE
„r
‡ b ~+… b+cv ˆ%n b€‰| +v 
a%p%c i p … o b+mŠ
‹
w+e Œ i+e b€
a+%„ r
Ž e f b  b+mE

s(c b p g b f‘
„ ‹Š  ’zv+“ b m f p ˆ‘”•%“ e b–„(”„ — — —
t%… m b%c k+p g+i † e™˜ b e Œ g+šŠ› œ
˜ p+m gz‡ † f i h i b f‘„ ‹Š  ’zv+“ b m f p ˆ‘”•%“ e b–„(”„ — — —
| b o b g b f™t%… m b+c k p g+i †+e mŠ
y%c † g+b  g+i †+eE
s+† ~+n+c b+m m b f€
ut
| p g p"x+b g™v ˆ%n b€
x+†%c g+b f‘
ut
˜ p+… b oŠ
ž ž ž ž ž w+e Œ i+e b(Ÿ †+m gz| b n b+e f+b e g–Ž e h+†+c ~ p g+i †+e ž ž ž ž ž
| p g p"x+b gzy p Œ b™x i q b€
¡(„ — r
u+“ ~+… b+c"† hz| p g+p"x+b gzy p Œ b+mE„
¢ i o bz¢ †%c ~+p g‘
 +‹
¢ i%c m gz| p g+p™y p Œ bŠ
„
‡ p ™t+… m™n b+cy p Œ b€
„ r+‹
t%… m"i ez¢ i%c m gz| p g+p™y p Œ bŠ£„ r
ž ž ž ž ž (o n š p … b g+i ¤˜ i+m gz† h"a%p+c i p … o b+m"p+e f%g g(c i … “ g+b m ž ž ž ž ž
¥ a%p%c i p … o bCv ˆ+n bU˜ b+eCy †+m;¢ †+c ~ p g
Ž e h †%c ~+p g¦˜ p+… b o
§¨;
§ § § § §©+§ w § l § | §+§v § § § § § § § u+§ “ §~ § § § § § § § §¡ª
§ § § § § §œ §U
§ § § § § | § | § ‡ § ‡ §« §«E§ „ §‘§ ƒ¬
§ § § § § | § | § ‡ § ‡ §« §«E§ „ §‘§ ƒ¬
§ § § § §© § b+§ … § “ § c §g+§ m §f § p §g%§ “ §~
;©+w+˜ |
u+“ ~
¡ªœ ¡;—‘ƒ
©bof
œ;©+w x s+ ˜
u+“ ~
¡ª’ r;©+w x s +˜ ¢Eƒ
© b+m  š o b  š g
„;Ž |
u+“ ~
¡

Ž|
rUu (‡ w
s%š p%cª„ r
¡
u p ~+b
’Ca+t+{ u %‡ wRs%š p%cª„ rªr 
a+†%c e p ~ b
‹^a+x+} ‡ ‡ w
u+“ ~
¡ª¨ 
a+b%c mEƒ x+“ ~ ~+b
r
4.2
Einfache Tabellen
43
****************** Häufigkeitsverteilung für Geschlecht ************;
45
TITLE1 'Häufigkeitsverteilung für die Variable Geschlecht'; RUN;
46
TITLE2 'mit SELECT und GROUP BY' ;RUN;
47
TITLE3 'COUNT(*) gibt missing values als solche aus';
48
TITLE4 'COUNT(geschl) gibt missing values als 0 aus';
49
PROC SQL;
50
SELECT geschl, COUNT(*) FROM saskurs.dat1
51
GROUP BY geschl;
52
QUIT;
NOTE: The PROCEDURE SQL used 0.17 seconds.
­ ®+¯ °+± ²+³ ´ ± µ+¶ · ´%¸ µ ´ ± ¹+¯ º ²"°%» ¸
¼+± ´½+¾%¸ ± ¾+¿ ¹ ´"À+´ ¶ Á Â ¹ ´ Á+Â µ
Ä ± µ™Å Æ+Ç Æ È É¤¯ º ¼™À+Ê Ë+Ì ÍzÎ Ï
È Ë+Ì Ð ÉŠÑ Ò%Ó
² ±+¿ µ Ä ±+¶ ¶ ± º ²"·+¾ ¹+¯ ´+¶"¾ ¹ ¶™¶ Ô ¹ Á+ ´z¾ ¯ ¶
È Ë+Ì Ð ÉŠÑ ² ´ ¶ Á  ¹%Ó² ±+¿ µ Ä ±+¶ ¶ ± º ²"·+¾ ¹+¯ ´+¶"¾ ¹ ¶Õ¤¾ ¯ ¶
À+´+¶ Á+Â ¹ ´ Á Â µ
Ö Ö Ö Ö ´ Ö ± Ö ¿ Ö ¹ Ö ± Ö Á+Ö Â Ö Ö Ö Ö Ö Ö Ö Ö Ö ÖØ
×
Ù
Ä ®+º º ¹ ± Á+Â
53
54
****************** Häufigkeitsverteilung für Vsumme ************;
55
TITLE1 'Häufigkeitsverteilung für die Variable VSumme'; RUN;
56
TITLE2 'mit SELECT und GROUP BY' ;RUN;
57
TITLE3 'COUNT(Vsumme) gibt missing values als 0 aus';
58
PROC SQL;
59
SELECT Vsumme, COUNT(Vsumme) FROM saskurs.dat1
60
GROUP BY Vsumme;
61
QUIT;
NOTE: The PROCEDURE SQL used 0.07 seconds.
Ú Û+Ü Ý+Þ ß+à á Þ â+ã ä á%å â á Þ æ+Ü ç ß"Ý%è å
é+Þ áê+ë%å Þ ë+ì æ áê+í+Ü î î+á
î+Þ â™í ð+ñ ð ò ó¤Ü ç é™ô+õ ö+÷ øzù ú
ò ö+÷ û óŠü ê(ã Ü î î+á%ýß Þ+ì â™î+Þ+ã ã Þ ç ß"ä+ë æ+Ü á+ã"ë æ ãþ¤ë Ü ã
ê%á%å ãŠÿ í%Ü î î+á
ÿ
þ
þ
þ þ
þ þ
ïþ
þ þ
þ þ
þ þ
ïþþþ
þ þ þ
þ þ þ þ
ï
Ã
62
63
****************** Häufigkeitsverteilung für Vsumme ************;
64
TITLE1 'Häufigkeitsverteilung für die Variable VSumme'; RUN;
65
TITLE2 'mit SELECT und GROUP BY' ;RUN;
66
TITLE3 'COUNT(*) gibt missing values als solche aus';
67
PROC SQL;
68
SELECT Vsumme, COUNT(*) FROM saskurs.dat1
69
GROUP BY Vsumme;
70
QUIT;
NOTE: The PROCEDURE SQL used 0.05 seconds.
" #
$ # % &' "(
) *
+ ,.- /
% *
+ 0 &21 34 . " 5 6
7 . !
2
8 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9
8
:
! ;
:
:; ;
<
= ; ;
:
> ! ;
:
? ; ;
:
@ ; ;
:
: @ ; ;
:
> ; ; ;
:
: ! ; ; ;
:
= ; ; ; ;
:
71
72
73
****************** VERWENDUNG VON ALIAS MIT AS ************;
74
TITLE1 'Kennzahlen für Geld getrennt nach Geschlecht'; RUN;
75
TITLE2 'erzeugt mit COUNT, AVG, MAX, MIN';RUN;
76
PROC SQL;
77
SELECT Geschl,
78
COUNT(*) as Anzahl,
79
AVG(Geld) AS Mittel LABEL="Geld, Mittelwert",
80
MAX(Geld) AS Maximum LABEL="Geld, Maximum",
81
MIN(Geld) AS Minimum LABEL="Geld, Minimum"
82
FROM saskurs.dat1
83
GROUP BY Geschl;
84
QUIT;
NOTE: The PROCEDURE SQL used 0.14 seconds.
85
A B C C D E F G B
CH
I
JK
B G L.M B NOJ B
C C N'C E P FK
B Q P F G B P
F N
BJ D B
S M N"T
U N"V W
X Y Z\[^]
_
K\[a` ] bca
[ `d Y
K
B
Q P
F
o o o o o
lB U
T w
C
G B
o o
p G
C G
K
B G L\[eK
P F Ng]Y h ]Oi jk` U N N B G lBJ Nm` E n
o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o
U P
F
q
r s t q s suq s
U P
F
x
t r q y t yzr s s
O
B G L\[eK
U TS Tm` U
C
o o o o o o o o o o
s s s s
s s s s
R
B G Lf[
U T
S T
o o o o
r v s s
rs s
4.3
Subsets mit WHERE
Mit WHERE können Teildatensätze bei der Übergabe der SAS-Datei an PROC SQL selektiert werden.
Nur Variablen, die in der SAS-Datei vorhanden sind, können zur Selektierung verwendet werden.
86
******* Kennzahlen fuer Geld mit DISTINCT und WHERE Bedingung *********;
87
TITLE1 'Kennzahlen für die Variable Geschlecht'; RUN;
88
TITLE2 'bei Personen, bei denen Geld >= 4000'; RUN;
89
TITLE3 'mit dem WHERE-Befehl';RUN;
90
PROC SQL;
91
SELECT DISTINCT geschl, COUNT(*),
92
SUM(Geld) AS summe LABEL="Geld, Summe",
93
AVG(Geld) AS mittel LABEL="Geld, Mittelwert",
94
MAX(Geld) AS Maximum LABEL="Geld, Maximum",
95
MIN(Geld) AS Minimum LABEL="Geld, Minimum"
96
FROM saskurs.dat1
97
WHERE Geld >= 4000
98
GROUP geschl;
99
QUIT;
100
NOTE:
used
{ |
} } ~ 
€ The
 |
}PROCEDURE
‚
ƒ
„…
† |‡„ SQL
†  ˆ  |"
‰ |
Š ‹
0.17
€  | ‹ € Œ seconds.
ˆ | "
† Ž | „ Š 
} | }‘’ˆ | † … | } | }‰
| 
| € 
— † Œ"… | —˜O™ š › š‘œ  | ‚ ‰ |
‰
|
Š ‹
€  | ‹ € Œ
Ÿ
¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥
£| † ˆ  † ‹
€
¦u• – §
}
}

†
‹
€
•z«  – ¬
— ª
 …\
— — |¢¡ † Œ Œ |
¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥
¨ – –
¦
– – –
•
‰ |  …\e‰
 £O|„ Œm¡  ¤
¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥
– ¦ © § –u• –
¦  ¦ § –z« – –
| 
† —
¥ ¥
– –
– –
…fž‰
|
—
¡ † } †
¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥
– –
§
– –
•
 …f
— —
¥ ¥ ¥
¨ – –
– – –
101 *******Häufigkeitsverteilung für Geschlecht+Vorname bei Geld >= 1000 ******;
102 *******Sortiert nach Geschlecht und ANZAHL (Absteigend) ****************;
103 TITLE1 'Häufigkeitsverteilung für Geschlecht+Vorname bei Geld >= 1000'; RUN;
104 TITLE2 'Sortiert nach Anzahl (absteigend)';RUN;
105 PROC SQL;
106
SELECT Geschl, Vorname, COUNT(*) AS Anzahl LABEL="Anzahl"
107
FROM saskurs.dat1
108
WHERE Geld >= 1000
109
GROUP BY Geschl, Vorname
110
ORDER BY Geschl, Anzahl DESCENDING;
111 QUIT;
112
NOTE:
SQL
­ ®
¯ °
± ²
³ The
´ ± µ
¶ PROCEDURE
· ´¸ µ ´ ± ¹
¯ º ²°
» ¸¼
used
´
¶ ½
¾ ¹ 0.14
´ ½
¾ µ ¿ À
seconds.
Á¸ º  à ´'Ä ´ ±¼ ´ ¹ Å'Æ Ç'È É É É
Ë
Á¸
¼
´
¶
Ò Ò Ò
Ó
Ó
Ó
Ã
Ã
Ã
Ã
Ã
Ã
µ
±
½
¾
Ò Ò
´ ±
´ ±
´ ±
®
º
®
º
®
º
®
º
®
º
®
º
´¸
¹ ´
Ò Ò
Ä ¹
Ä ¹
Ä ¹
º ¹
º ¹
º ¹
º ¹
º ¹
º ¹

….“ ”• – – –
µ'º  ½ ¾ÌOº Í Â
¾ Ï
¹ Î Â
Ä ¶ µ ´ ± ² ´
º ‘
Å Ð
½ ¾ µÑÀÁ¸ º  Ã
´
Ì º Í O
 ¾ ¹
Ò Ò Ò Ò Ò Ò Ò Ò Ò Ò Ò Ò Ò Ò Ò Ò Ò Ò Ò Ò Ò Ò Ò Ò Ò Ò Ò
± ½
¾Ô̑º
Õ Â
Ö
± ½
¾Ñ× Â¸ ± Â
È
± ½
¾Ô̑º Ÿ ´ Â
È
± ½
¾Ô̑º Ÿ ´ Â
¶
Ö
± ½
¾kØ
¸ Â º ³Ù Ú µ µ Á
È
± ½
¾kØ
¸ ± µ
Í
È
± ½
¾ÜÛ¾ Á Ã
 ¶
È
± ½
¾Ñ× Â¸ ± Â
È
± ½
¾ÔÌO¹ °¸ ´ Å
È
Ê
4.4
Subsets mit HAVING
Mit HAVING können Teile einer SQL-Tabelle selektiert werden, auch unter Verwendung von Variablen,
die in der ursprünglichen SAS-Datei nicht vorhanden sind.
113 *************** bestimmte Leute auswählen mit HAVING **************;
114 TITLE1 'Name, Vorname, Geld, Vsumme und Differenz'; RUN;
115 TITLE2 'bei Personen, die Vsumme > 3000 haben'; RUN;
116 TITLE3 'Auswahl mit HAVING möglich, da neue Variable Differenz benutzt
wird';RUN;
117 PROC SQL;
118
SELECT Name, Vorname, Geld, Vsumme,
119
(Geld-Vsumme) AS Diff LABEL="Differenz Geld-VSumme"
120
FROM saskurs.dat1
121
HAVING Diff > 3000
122
ORDER BY Diff;
123
;
124 QUIT;
NOTE: The PROCEDURE SQL used 0.1 seconds.
125
Ý Þ ß à\áãâä
å æ Þ ß à\áèç
à é ê\áèâë ì ß ß à'ì æ ê.í î ï ï àå à
æ ð
ò à "
î ó àå ë ä
æ à æ‘áaê î à"í î ï ï.ôõ ö ö ö'÷ Þ ò à æ
ø ì ë ùOÞ ÷ éß
î ú.û ø
âOü Ý ç"ß
ý þ é î ÿ
÷‘áaê Þ.æ à ì àâÞ
å î Þ ò é à.í î ï ï
à
å à æ ð ò à æ ì ú
ð úùîå ê
‘
Ý Þ ß à
â
äå æ Þ ß
à
Þå ä æ
ø é ïå à ê
ÿ
÷ ß
î ú
ð
å Þ æ ú ú
ä
ç
Þ
ì ê
î
øOæ Þ
Þå ä
æ
Þå î Þ
úOå ì æ ð
÷ ä ß
Þ ë
ä à é é àå
øOæ êå à Þ
ë
í î ï ï àå à æ ð
ç
à é êkâà
å ë ì ß ß àkç à é ê â ì ß ß à
ö
ö
õ
ö ö ö
ö ö ö
ö ö
ö
ö ö
ö
ö ö
ö
ö ö
ö ö
ö ö
ö ö
ö ö ö ö ö ö
õ ö ö ö ö
ö
ö
ö
ö
ö
õ õ ö ö
õ ö ö
ö ö
õ ñ ö ö ö
ö ö ö
ñ ö ö ö ö
ñ
4.5
JOIN : Zusammenfügung von Tabellen
126 ***************** "Join" ***********************************;
127 * Zunaechst werden erstmal zwei Dateien erzeugt,;
128 * damit man zwei Dateien zusammenfuegen kann;
129 DATA saskurs.dat2;
130
SET saskurs.dat1;
131
KEEP id Name Vorname Geschl Gebdat;
132 RUN;
NOTE: The data set SASKURS.DAT2 has 12 observations and 5 variables.
NOTE: The DATA statement used 0.19 seconds.
133 PROC
134
BY
135 RUN;
NOTE: The
NOTE: The
SORT DATA=saskurs.dat2;
Gebdat;
data set SASKURS.DAT2 has 12 observations and 5 variables.
PROCEDURE SORT used 0.16 seconds.
136 DATA saskurs.dat3;
137
SET saskurs.dat1;
138
KEEP id Geld Vsumme;
139 RUN;
NOTE: The data set SASKURS.DAT3 has 12 observations and 3 variables.
NOTE: The DATA statement used 0.19 seconds.
140 PROC
141
BY
142 RUN;
NOTE: The
NOTE: The
143
SORT DATA=saskurs.dat3;
Geld;
data set SASKURS.DAT3 has 12 observations and 3 variables.
PROCEDURE SORT used 0.13 seconds.
Ohne WHERE erstellt PROC SQL das kartesische Produkt aus den einzelnen Dateien, was zu extrem
großen Tabellen führen kann. I.a. wird man deshalb eine WHERE-Bedingung verwenden. Zunächst ein
Gegenbeispiel ohne WHERE. Ohne Angabe der Quelldatei wählt SELECT selbständig eine geeignete
Quelldatei aus (im Beispiel dat2 bzw. dat3).
144 **** "UNSINNIGES BZW. FEHLERHAFTES Join" *********************************** ;
145 TITLE1 ’FEHLERHAFTE Zusammenfassung zweier Tabellen’; RUN;
146 TITLE2 ’Da die Dateien verschieden geordnet sind, fehlt hier’;
147 TITLE3 ’IRRTUEMLICH die WHERE-Bedingung dat2.id=dat3.id.’;
148 TITLE4 ’Ausserdem wird so das kartesische Produkt erstellt.’;
149 TITLE5 ’Vorsicht: Gefahr extrem grosser Tabellen n1*n2’; RUN;
150 PROC SQL;
151
SELECT dat2.id, dat2.Name, Vorname, Geschl, Gebdat,
152
dat3.VSumme, Geld
153
FROM saskurs.dat2, saskurs.dat3
154 QUIT;
155
NOTE: The execution of this query involves performing one or more Kartesian product
joins that can not be optimized.
! !"
0 1) "'0 2 " ) "#+3"* ; < = ; > 1) "@? "* 1" !+()* 17 61
K6* ) 45 2EL:M" $5 *+" N
;Q
0 P !"
U U U U U U U U U U U U U U U
. .V= 6 " - GXB * 6#
\QM 1)
_V# 1* "
[RM 1)
.dT4 5 !)
bXB * 6#
CQT4 5 !)
^XJ " 2& 6
. /X= 6 " - . CQT 2* #
]f # %
. .V= 6 " - GXB * 6#
\QM 1)
_V# 1* "
[RM 1)
.dT4 5 !)
bXB * 6#
CQT4 5 !)
^XJ " 2& 6
. /X= 6 " - . CQT 2* #
]f # %
. .V= 6 " - GXB * 6#
\QM 1)
_V# 1* "
[RM 1)
.dT4 5 !)
bXB * 6#
CQT4 5 !)
U U
"*
6 2
2&
2&
- 1
"*
&
"*
6 2
2&
2&
- 1
"*
&
"*
6 2
2&
2&
# $ # %'&
45 ) " 1 "#% "
A B " 1) # %
IH * 2 " )
2* " !'%* 6 (" ) "*+ , " - - "#
6* 1# " 27 ) # 198:$ "5 - 7
2 5 ) "*
# %1 2 CED ) 1F 1 2 G9D ) 9
1 D
4 5 "IJ* 6 1 H 2'"* 2 " - - 2ED
"*@ , " - - "#I#. O # C
K6* # !"
U U U U U U U U U U U U U U
# 1* " - $* " 1
* ) 2&
2)`= * )
# c
# 1* "
= * )
* # HA e
# 1* " # 1* " 5 6 ! # c
# 1* " - $* " 1
* ) 2&
2)`= * )
# c
# 1* "
= * )
* # HA e
# 1* " # 1* " 5 6 ! # c
# 1* " - $* " 1
* ) 2&
2)`= * )
# c
# 1* "
= * )
* # HA e
M" 45
U U U U U U U U U U U U
! W#
! W#
! W#
! W#
(" )
(" )
(" )
2 2 6
! W#
! W#
! W#
! W#
(" )
! W#
! W#
! W#
! W#
(" )
(" )
(" )
2 2 6
! W#
! W#
! W#
! W#
(" )
! W#
! W#
! W#
! W#
(" )
(" )
(" )
2 2 6
! W#
- "
U U
# # # # , , , # # # # , # # # # , , , # # # # , # # # # , , , # -
4 5 2QM" , * 2 1
U U U U U U U U U U U U U U
) 45
) 45Y. .Z /[Z .
) 45Y. GZ / ^Z .
) 45a/.Z / bZ .
) 45Y. .Z / ^Z .
) 45a/.Z . . Z .
) 45Y. CZ / ^Z .
) 45Y. .Z . CZ .
) 45a/.Z / bZ .
) 45a/.Z / ^Z .
) 45Y. ^Z /[Z .
) 45a/.Z / bZ .
) 45
) 45Y. .Z /[Z .
) 45Y. GZ / ^Z .
) 45a/.Z / bZ .
) 45Y. .Z / ^Z .
) 45a/.Z . . Z .
) 45Y. CZ / ^Z .
) 45Y. .Z . CZ .
) 45a/.Z / bZ .
) 45a/.Z / ^Z .
) 45Y. ^Z /[Z .
) 45a/.Z / bZ .
) 45
) 45Y. .Z /[Z .
) 45Y. GZ / ^Z .
) 45a/.Z / bZ .
) 45Y. .Z / ^Z .
) 45a/.Z . . Z .
) 45Y. CZ / ^Z .
) 45Y. .Z . CZ .
./
2 R
! K"* S
D T
U U U U U U U U U U U U
D
\ ].
\ ] G
\ ][
\ _.
\ _.
\ _ C
\ _ C
\ _ ^
\ _ ]
\ _ _
\ _ _
D
\ ].
\ ] G
\ ][
\ _.
\ _.
\ _ C
\ _ C
\ _ ^
\ _ ]
\ _ _
\ _ _
D
\ ].
\ ] G
\ ][
\ _.
\ _.
\ _ C
\ _ C
! ! "
M"
U U U U U U U U U U U U
D
.
D
.
D
.
D
.
D
.
D
.
D
.
D
.
D
.
D
.
D
.
D
.
] /
.G
] /
.G
] /
.G
] /
.G
] /
.G
] /
.G
] /
.G
] /
.G
] /
.G
] /
.G
] /
.G
] /
.G
./ /
.]
./ /
.]
./ /
.]
./ /
.]
./ /
.]
./ /
.]
./ /
.]
./ /
.]
- 1
U U
/ /
/ /
/ /
/ /
/ /
/ /
/ /
/ /
/ /
/ /
/ /
/ /
/ /
/ /
/ /
/ /
/ /
/ /
/ /
/ /
/ /
/ /
/ /
/ /
/ /
/ /
/ /
/ /
/ /
/ /
/ /
/ /
g h i j h k i lg m hno p q r rs
~ q y s'~ q € s y st+sz p
† k k m‡ h ˆj † ‰ iy s@Ši h
lo p p sz s r+xyz 7p „
“„z p y ‚ƒ €E”:•s uqƒ z+s –
†Q
~ ˜ q rs
š š š š š š š š š š š š š š š
›X’ s €w „
} Xˆ „ s | |
} Q™ €z o t
¢fj q t v
} }Vˆ „ s | |
XŒ qz „t
Q•q o y
¡Vlt z s
£R•q o y
}d™‚ ƒ ry
ŸXŒ qz „t
Q™‚ ƒ ry
›X’ s €w „
} Xˆ „ s | |
} Q™ €z o t
¢fj q t v
} }Vˆ „ s | |
XŒ qz „t
Q•q o y
¡Vlt z s
£R•q o y
}d™‚ ƒ ry
ŸXŒ qz „t
Q™‚ ƒ ry
›X’ s €w „
} Xˆ „ s | |
} Q™ €z o t
¢fj q t v
} }Vˆ „ s | |
XŒ qz „t
Q•q o y
¡Vlt z s
š š
| 
sz
w
sz
„ €
€w
€w
| 
sz
w
sz
„ €
€w
€w
| 
sz
w
sz
„ €
t uq p p o t v'w
‚ƒ y s  stv s
k h‹ Œ s y t vo
qpI‘ qz € sp y
€z s r'vz „p p
xs y sz+m q{ s | | st
„z t s €7p y t 9…:u sƒ | 7
€ ƒ y sz
t v q € EŽ y   q € 9Ž y 9
 Ž
p ‚ ƒ sI’z „ o ‘ €'sz p € s | | €EŽ
sz@m q{ s | | stIt} — t 
“„z t q rs
• sp ‚ƒ
š š š š š š š š š š š š š š š š š š š š š š š š š š
lt z s qp
r œt
lt z s qp
r œt
mƒ „ rq p
r œt
lt ¤ q
xs y
lt z s qp
r œ t
l| uz s 
r œ t
gz y €w
r œ t
€y`ˆ qz y q
r œ t
lt ¤ q
xs y
lt z s q
xs y
ˆ qz y q
xs y
gz qt ‘‹ ¦ € € „
r œ t
lt z s qp
r œ t
lt z s qp
r œ t
mƒ „ rq p
r œ t
lt ¤ q
xs y
lt z s qp
r œ t
l| uz s 
r œ t
gz y €w
r œ t
€y`ˆ qz y q
r œ t
lt ¤ q
xs y
lt z s q
xs y
ˆ qz y q
xs y
gz qt ‘‹ ¦ € € „
r œ t
lt z s qp
r œ t
lt z s qp
r œ t
mƒ „ rq p
r œ t
lt ¤ q
xs y
lt z s qp
r œ t
l| uz s 
r œ t
gz y €w
r œ t
€y`ˆ qz y q
r œ t
| s
š š
t |
t |
t |
{ |
t |
t |
t |
t |
{ |
{ |
{ |
t |
t |
t |
t |
{ |
t |
t |
t |
t |
{ |
{ |
{ |
t |
t |
t |
t |
{ |
t |
t |
t |
t |
‚ ƒ €Q•s { oz €p q
š š š š š š š š š š š š š š
y ‚ƒa}ž  Ÿž }
y ‚ƒa}ž  ›ž }
y ‚ƒY} ›ž £ž }
y ‚ƒa}ž  Ÿž }
y ‚ƒ
y ‚ƒY} }ž £ž }
y ‚ƒY} ž  ›ž }
y ‚ƒ¥}ž  Ÿž }
y ‚ƒY} }ž  ›ž }
y ‚ƒa}ž } } ž }
y ‚ƒY} ž  ›ž }
y ‚ƒY} }ž } ž }
y ‚ƒa}ž  Ÿž }
y ‚ƒa}ž  ›ž }
y ‚ƒY} ›ž £ž }
y ‚ƒa}ž  Ÿž }
y ‚ ƒ
y ‚ƒY} }ž £ž }
y ‚ƒY} ž  ›ž }
y ‚ƒa}ž  Ÿž }
y ‚ƒY} }ž  ›ž }
y ‚ƒa}ž } } ž }
y ‚ƒY} ž  ›ž }
y ‚ƒY} }ž } ž }
y ‚ƒa}ž  Ÿž }
y ‚ƒa}ž  ›ž }
y ‚ƒY} ›ž £ž }
y ‚ƒa}ž  Ÿž }
y ‚ƒ
y ‚ƒY} }ž £ž }
y ‚ƒY} ž  ›ž }
y ‚ƒa}ž  Ÿž }
} }
€o
š š
¡
¡
¡
¡
rR“sz S
p Ž ™o
š š š š š š š š š š
›
¢
¡
¡
Ž
¢}
¢ 
¢£
¡}
¡}
¡ 
¡ 
¡ ›
¡ ¢
¡ ¡
¡ ¡
Ž
¢}
¢ 
¢£
¡}
¡}
¡ 
¡ 
¡ ›
¡ ¢
¡ ¡
¡ ¡
Ž
¢}
¢ 
¢£
r r
š š
}
}
}
}
 
 
 
 
 
 
 
 
 
 
 
 
}
}
}
}
}
}
}
}
}
}
}
}
› ¢
› ¢
› ¢
› ¢
s
•s
š š š š š š š š š š

}¢

}¢

}¢

}¢

 ¡

 ¡

 ¡

 ¡

 ¡

 ¡

 ¡

 ¡

 ¡

 ¡

 ¡

 ¡

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 
| 
š š
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
§ ¨ © ª ¨ « © ¬§ ­ ¨®¯ ° ± ² ²³
¿ ± À¹ ³'¿ ± Á ³ ¹ ³´+³º °
Ç « « ­È ¨ ɪ Ç Ê ©À¹ ³@Ë© ¨
¬¯ ° ° ³º À³ ²+¸¹º À7° ÅÀ
Óź ° ¹ ÃÄ ÁEÔ:Õ³ µ±Ä º+³ Ö
ÇQ
¿ Ø ± ²³
Ú Ú Ú Ú Ú Ú Ú Ú Ú Ú Ú Ú Ú Ú Ú
ÛRÕ± ¯ À¹
½dÙÃ Ä ²¹
ãXÍ ±º Å´
¾QÙÃ Ä ²¹
ßXÒ ³ Á· Å
½ ÞXÉ Å ³ ¼ ¼
½ ¾QÙ Áº ¯ ´
âfª ± ´ ¶
½ ½VÉ Å ³ ¼ ¼
ÐXÍ ±º Å´
àQÕ± ¯ À¹
áV¬´ Àº ³
ÛRÕ± ¯ À¹
½dÙÃ Ä ²¹
ãXÍ ±º Å´
¾QÙÃ Ä ²¹
ßXÒ ³ Á· Å
½ ÞXÉ Å ³ ¼ ¼
½ ¾QÙ Áº ¯ ´
âfª ± ´ ¶
½ ½VÉ Å ³ ¼ ¼
ÐXÍ ±º Å´
àQÕ± ¯ À¹
áV¬´ Àº ³
ÛRÕ± ¯ À¹
½dÙÃ Ä ²¹
ãXÍ ±º Å´
¾QÙÃ Ä ²¹
ßXÒ ³ Á· Å
½ ÞXÉ Å ³ ¼ ¼
½ ¾QÙ Áº ¯ ´
âfª ± ´ ¶
Ú Ú
Á·
Á·
¼ À
³º
·
³º
Å Á
Á·
Á·
¼ À
³º
·
³º
Å Á
Á·
Á·
¼ À
³º
·
´ µ± ° ° ¯ ´ ¶'·
ÃÄ ¹ ³ À ³´¶ ³
« ¨Ì Í ³ À¹ ´ ¶¯
±°IÑ ±º Á ³° ¹
Áº ³ ²'¶º Å° °
¸³ ¹ ³º+­ ±» ³ ¼ ¼ ³´
ź À´ ³ Á7° ¹ ´ À9Æ:µ ³Ä ¼ 7
Á Ä ¹ ³º
´ ¶À ± Á ¾EÎ ¹ ÀÏ À ± Á Ð9Î ¹ 9
À Î
° Ã Ä ³IÒº Å À¯ Ñ Á'³º ° Á ³ ¼ ¼ ÁEÎ
³º@­ ±» ³ ¼ ¼ ³´I´½ × ´ ¾
Óź ´ ± ²³
Ú Ú Ú Ú Ú Ú Ú Ú Ú Ú Ú Ú Ú Ú
¬´ Ü ±
¬´ Àº ³ ±
É ±º ¹ ±
§º ±´ ÑÌ ä
¬´ Àº ³ ±°
¬´ Àº ³ ±°
­Ä Å ²± °
¬´ Ü ±
¬´ Àº ³ ±°
¬¼ µº ³ À
§º ¹ Á·
Á¹`É ±º ¹ ±
¬´ Ü ±
¬´ Àº ³ ±
É ±º ¹ ±
§º ±´ ÑÌ ä
¬´ Àº ³ ±°
¬´ Àº ³ ±°
­Ä Å ²± °
¬´ Ü ±
¬´ Àº ³ ±°
¬¼ µº ³ À
§º ¹ Á·
Á¹`É ±º ¹ ±
¬´ Ü ±
¬´ Àº ³ ±
É ±º ¹ ±
§º ±´ ÑÌ ä
¬´ Àº ³ ±°
¬´ Àº ³ ±°
­Ä Å ²± °
¬´ Ü ±
Õ³° ÃÄ
Ú Ú Ú Ú Ú Ú Ú Ú Ú Ú Ú Ú
¸³ ¹
¸³ ¹
¸³ ¹
Á Á Å
² å´
² å´
² å´
² å´
¸³ ¹
² å´
² å´
² å´
² å´
¸³ ¹
¸³ ¹
¸³ ¹
Á Á Å
² å´
² å´
² å´
² å´
¸³ ¹
² å´
² å´
² å´
² å´
¸³ ¹
¸³ ¹
¸³ ¹
Á Á Å
² å´
² å´
² å´
² å´
¸³ ¹
¼ ³
Ú Ú
» ¼
» ¼
» ¼
´ ¼
´ ¼
´ ¼
´ ¼
» ¼
´ ¼
´ ¼
´ ¼
´ ¼
» ¼
» ¼
» ¼
´ ¼
´ ¼
´ ¼
´ ¼
» ¼
´ ¼
´ ¼
´ ¼
´ ¼
» ¼
» ¼
» ¼
´ ¼
´ ¼
´ ¼
´ ¼
» ¼
Ã Ä ÁQÕ³ » ¯º Á° À±
Ú Ú Ú Ú Ú Ú Ú Ú Ú Ú Ú Ú Ú Ú
¹ ÃÄY½ ½Ý Þ ßÝ ½
¹ ÃÄaÞ½Ý ½ ½ Ý ½
¹ ÃÄY½ ¾Ý Þ ßÝ ½
¹ ÃÄY½ ½Ý ½ ¾Ý ½
¹ ÃÄaÞ½Ý Þ ãÝ ½
¹ ÃÄaÞ½Ý Þ ßÝ ½
¹ ÃÄY½ ßÝ ÞÛÝ ½
¹ ÃÄaÞ½Ý Þ ãÝ ½
¹ ÃÄ
¹ ÃÄY½ ½Ý ÞÛÝ ½
¹ ÃÄY½ ÐÝ Þ ßÝ ½
¹ ÃÄaÞ½Ý Þ ãÝ ½
¹ ÃÄY½ ½Ý Þ ßÝ ½
¹ ÃÄaÞ½Ý ½ ½ Ý ½
¹ ÃÄY½ ¾Ý Þ ßÝ ½
¹ ÃÄY½ ½Ý ½ ¾Ý ½
¹ ÃÄaÞ½Ý Þ ãÝ ½
¹ ÃÄaÞ½Ý Þ ßÝ ½
¹ ÃÄY½ ßÝ ÞÛÝ ½
¹ ÃÄaÞ½Ý Þ ãÝ ½
¹ ÃÄ
¹ ÃÄY½ ½Ý ÞÛÝ ½
¹ ÃÄY½ ÐÝ Þ ßÝ ½
¹ ÃÄaÞ½Ý Þ ãÝ ½
¹ ÃÄY½ ½Ý Þ ßÝ ½
¹ ÃÄaÞ½Ý ½ ½ Ý ½
¹ ÃÄY½ ¾Ý Þ ßÝ ½
¹ ÃÄY½ ½Ý ½ ¾Ý ½
¹ ÃÄaÞ½Ý Þ ãÝ ½
¹ ÃÄaÞ½Ý Þ ßÝ ½
¹ ÃÄY½ ßÝ ÞÛÝ ½
¹ ÃÄaÞ½Ý Þ ãÝ ½
½¾
Á¯ ²RÓ³º S
° Î Ù¯
Ú Ú Ú Ú Ú Ú Ú Ú Ú Ú Ú Ú
à á½
à á½
à á ¾
à á ¾
à á ß
à á â
à á á
à á á
Î
à â½
à â Ð
à âÛ
à á½
à á½
à á ¾
à á ¾
à á ß
à á â
à á á
à á á
Î
½
à â½
½
à â Ð
½
à âÛ
½
à á½
½
à á½
½
à á ¾
½
à á ¾
½
à á ß
½
à á â
½
à á á
½
à á á
½
² ²
Ú Ú
ß â
ß â
ß â
ß â
ß â
ß â
ß â
ß â
á Þ
á Þ
á Þ
á Þ
á Þ
á Þ
á Þ
á Þ
á Þ
á Þ
á Þ
á Þ
Û Þ
Û Þ
Û Þ
Û Þ
Û Þ
Û Þ
Û Þ
Û Þ
Û Þ
Û Þ
Û Þ
Û Þ
³
Õ³
Ú Ú Ú Ú Ú Ú Ú Ú Ú Ú
Þ
Ð Þ
Þ
Ð Þ
Þ
Ð Þ
Þ
Ð Þ
Þ
Ð Þ
Þ
Ð Þ
Þ
Ð Þ
Þ
Ð Þ
Þ
ß Þ
Þ
ß Þ
Þ
ß Þ
Þ
ß Þ
Þ
ß Þ
Þ
ß Þ
Þ
ß Þ
Þ
ß Þ
Þ
ß Þ
Þ
ß Þ
Þ
ß Þ
Þ
ß Þ
Þ
â Þ
Þ
â Þ
Þ
â Þ
Þ
â Þ
Þ
â Þ
Þ
â Þ
Þ
â Þ
Þ
â Þ
Þ
â Þ
Þ
â Þ
Þ
â Þ
Þ
â Þ
¼ À
Ú Ú
Þ Þ
Þ Þ
Þ Þ
Þ Þ
Þ Þ
Þ Þ
Þ Þ
Þ Þ
Þ Þ
Þ Þ
Þ Þ
Þ Þ
Þ Þ
Þ Þ
Þ Þ
Þ Þ
Þ Þ
Þ Þ
Þ Þ
Þ Þ
Þ Þ
Þ Þ
Þ Þ
Þ Þ
Þ Þ
Þ Þ
Þ Þ
Þ Þ
Þ Þ
Þ Þ
Þ Þ
Þ Þ
æ ç è é ç ê è ëæ ì çíî ï ð ñ ñò
þ ð ÿø ò'þ ð ò ø òóòù ï
ê ê ì ç é èÿø òè ç
ëî ï ï òù ÿò ñ+÷øù ÿ7ï ÿ
ù ï ø ò ôð ù+ò ó ôð ï ï î ó õ'ö ÷ò ø òù+ì ðú ò û û òó
ø ò ÿ òóõ ò ù ÿó ò 7ï ø ó ÿ:ô ò û ø òù
ê ç ò ÿø ó õî ó õÿ ð ø ÿ ÿ ð ý ø ÿ
ðï ðù òï ø ï ò ù ÿî 'òù ï ò û û ù ò ñ'õù ï ï òù@ì ðú ò û û òóIóü ó þ"! ð ñò
ù ó ð ñò
òï û ò "ò ú îù ï ÿð î ñ#òù ï$ %î ñ ñ ò
ò û ÿ
& & & & & & & ü & ü'
& & & & & ò & û & û & ò& ù & & & & & & & &ë& ó &ÿ& ù & ò & ð& ï & & & & & & & & & &ñ & ( & ó & ó & û & ø & & & & & & & & & & & & & & & & & & & & & & & & & & ) &* &* & & & & & & & &+ &ý &* &*
ý, ðù ó
ëû ôù ò ÿ
ñ ( ó ó û ø Y
ü ü- *)- ü . + ü
)**
+ý**
."ð î ÿø
æù ø ö
ñ ( ó ó û ø Y
ü ý- * /0- ü . + ý
)**
+ý**
1Vëó ÿù ò ø2 ðù ø ð
ñ ( ó ó û ø 3* ü- * 40- ü . +)
)**
+ý**
)#ð î ÿø
ëó 5 ð
÷ò ø ú û ø Y
ü ü- * /0- ü . 1 ü
)**
+ý**
ü6% ñø ö
ëó ÿù ò ð
÷ò ø ú û ø 3* ü- ü ü - ü . 1 ü
)**
+ý**
4, ðù ó
ðù ø ð
÷ò ø ú û ø Y
ü - * /0- ü . 1 )**
+ý**
"% ñø ö
æù ðó 7 ñ ( ó ó û ø Y
ü ü- ü 0- ü . 1 )**
+ý**
/, ò ö û ÿ
ëó ÿù ò ðï
ñ ( ó ó û ø 3* ü- * 40- ü . 1 /
)**
+ý**
ü *, ò û û òù
ëó ÿù ò ðï
ñ ( ó ó û ø 3* ü- * /0- ü . 1 +
)**
+ý**
ü "% ù î ó ö
ì ñð ï
ñ ( ó ó û ø Y
ü /- *)- ü . 1 1
)**
+ý**
+ éðóõ
f
ëó 5 ð
÷ò ø ú û ø 3* ü- * 40- ü . 1 1
)**
+ý**
ü ü' ò û û òù
ëó ÿù ò ðï
ñ ( ó ó û ø / * * *8/ * * * * *
ý, ðù ó
ëû ôù ò ÿ
ñ ( ó ó û ø Y
ü ü- *)- ü . + ü
/ * * *8/ * * * * *
." ð î ÿø
æù ø ö
ñ ( ó ó û ø Y
ü ý- * /0- ü . + ý
/ * * *8/ * * * * *
1 ëó ÿù ò ø2 ðù ø ð
V
ñ ( ó ó û ø 3* ü- * 40- ü . +)
/ * * *8/ * * * * *
)# ð î ÿø
ëó 5 ð
÷ò ø ú û ø Y
ü ü- * /0- ü . 1 ü
/ * * *8/ * * * * *
ü6% ñø ö
ëó ÿù ò ð
÷ò ø ú û ø 3* ü- ü ü - ü . 1 ü
/ * * *8/ * * * * *
4, ðù ó
ðù ø ð
÷ò ø ú û ø Y
ü - * /0- ü . 1 / * * *8/ * * * * *
"% ñø ö
æù ðó 7 ñ ( ó ó û ø Y
ü ü- ü 0- ü . 1 / * * *8/ * * * * *
/, ò ö û ÿ
ëó ÿù ò ðï
ñ ( ó ó û ø 3* ü- * 40- ü . 1 /
/ * * *8/ * * * * *
ü *, ò û û òù
ëó ÿù ò ðï
ñ ( ó ó û ø 3* ü- * /0- ü . 1 +
/ * * *8/ * * * * *
ü "% ù î ó ö
ì ñð ï
ñ ( ó ó û ø Y
ü /- *)- ü . 1 1
/ * * *8/ * * * * *
+ éðóõ
f
ëó 5 ð
÷ò ø ú û ø 3* ü- * 40- ü . 1 1
/ * * *8/ * * * * *
ü ü' ò û û òù
ëó ÿù ò ðï
ñ ( ó ó û ø ü + * * *9) * * * * *
ý, ðù ó
ëû ôù ò ÿ
ñ ( ó ó û ø Y
ü ü- *)- ü . + ü
ü + * * *9) * * * * *
." ð î ÿø
æù ø ö
ñ ( ó ó û ø Y
ü ý- * /0- ü . + ý
ü + * * *9) * * * * *
1 ëó ÿù ò ø2 ðù ø ð
V
ñ ( ó ó û ø 3* ü- * 40- ü . +)
ü + * * *9) * * * * *
)# ð î ÿø
ëó 5 ð
÷ò ø ú û ø Y
ü ü- * /0- ü . 1 ü
ü + * * *9) * * * * *
ü6% ñø ö
ëó ÿù ò ð
÷ò ø ú û ø 3* ü- ü ü - ü . 1 ü
ü + * * *9) * * * * *
4, ðù ó
ðù ø ð
÷ò ø ú û ø Y
ü - * /0- ü . 1 ü + * * *9) * * * * *
"% ñø ö
æù ðó 7 ñ ( ó ó û ø Y
ü ü- ü 0- ü . 1 ü + * * *9) * * * * *
üý
: ; < = ; > < ?0: @ ;BAC D E F FG H IE D D C H JLK M0G N GO@ EP G Q Q GH
T EBUN GLT E V G N GHWGO D XY N G U GHBJ G ZO UH G VD N H U[I GY Q VY N GO
\ > > @] ; ^= \ _ <BUN G`< ; > ;a b G UN H JC H JBU E V cd N Ue U E V fd N Ud
?C D D GO UG FM0NO UD ZBU EDg EO V GD N D X Y GhO Z UC g VLGO D V G Q Q Vd
iZO D N XY VjkG IEY OG l V0O G FLJO ZD D GO@ EP G Q Q GHHR m H c
\ T"n E FG
iZO H E FG
kGD XY Q G X Y V"kG P CO VD UE VC F#iGO D$d oC F F G
kG Q U
p p p p p p p pS,
p p p h p G pVp K p Z p Q pU p p p p p p p p?p H pU0p O p G p Ep D p p p p p p p p p pF p qp H p H p Q p N p Xp Y3
p p p p pr0p Rp s pr pt0p s p R pu pv pS p p p p p p p p R pw pr pr pr9
p p p p p p x pr pr pr pr pr
R r,^ Z G Q Q GO
?H U0O G ED
F qH H Q N XY3r0Rs r S0s R u v w
R w r r r9x r r r r r
R c"o VO C H K
@Y Z FE D
F qH H Q N XYyR Ss rxs R u v v
R w r r r9x r r r r r
wz= E H J
?H { E
MG N P Q N XY3r0Rs r t0s R u v v
R w r r r9x r r r r r
R R'^ Z G Q Q GO
?H U0O G ED
F qH H Q N XY
d
f r r r r|R r r r r r r
f,b EO ZH
?0Q I0O G U
F qH H Q N XYyR Rs rxs R u w0R
f r r r r|R r r r r r r
u"kE C UN
:O N VK
F qH H Q N XYyR fs r S0s R u w f
f r r r r|R r r r r r r
v'?H U0O G Z V VN2^ EO N E
F qH H Q N XY3r0Rs r t0s R u wx
f r r r r|R r r r r r r
x#kE C UN
?H { E
MG N P Q N XYyR Rs r S0s R u v0R
f r r r r|R r r r r r r
R6oX Y FN VK
?H U0O G E
MG N P Q N XY3r0Rs R R s R u v0R
f r r r r|R r r r r r r
t,b EO ZH
^ EO N E
MG N P Q N XYyR cs r S0s R u v c
f r r r r|R r r r r r r
c"oX Y FN VK
:O EH ga } V V Z
F qH H Q N XYyR Rs R c0s R u v c
f r r r r|R r r r r r r
S,h G VK Z Q U
?H U0O G ED
F qH H Q N XY3r0Rs r t0s R u v S
f r r r r|R r r r r r r
R r,^ Z G Q Q GO
?H U0O G ED
F qH H Q N XY3r0Rs r S0s R u v w
f r r r r|R r r r r r r
R c"o VO C H K
@Y Z FE D
F qH H Q N XYyR Ss rxs R u v v
f r r r r|R r r r r r r
wz= E H J
?H { E
MG N P Q N XY3r0Rs r t0s R u v v
f r r r r|R r r r r r r
RS
Nun wird ein sinnvolles Beispiel zur Zusammenfügung mehrerer Tabellen unter Verwendung einer
WHERE-Bedingung angegeben.
156 ***************** "Join" *********************************** ;
157 TITLE1 ’Korrekte Zusammenfassung zweier Tabellen’;
158 TITLE2 ’WHERE-Befehl, um die richtigen zuzuordnen’;
159 TITLE3 ’Da nichts anderes spezifiziert, in der Reihenfolge der 1. Datei’; RUN;
160 PROC SQL;
161
SELECT dat2.id, dat2.Name, Vorname, Geschl, Gebdat,
162
dat3.VSumme, Geld
163
FROM saskurs.dat2, saskurs.dat3
164
WHERE dat2.id=dat3.id;
165 QUIT;
NOTE: The PROCEDURE SQL used 0.14 seconds.
NOTE: PROC SQL statements are executed immediately; The RUN statement has no effect.
NOTE: The PROCEDURE SQL used 0.34 seconds.
~ € €  ‚ ƒB„… † ‡ ˆ ˆ ‰ Š‡ † † … ‰ ‹Œ 0 Ž € ‡  ‘ ‘ ‰
”0• – — –0˜ ™  Š š ‘$›œ… ˆŽ ž€ Ž Ÿ š ƒ Ž ‹  ‰BŒ… Œ… € ‰ ‰
‡L‰ Ž Ÿš ƒ†B‡‰ € †† ¡  Œ Ž Š Ž Œ Ž € ƒ›¢Ž ‰B €—  Žš ‰ Š  ‘ ‹ B €’£¢ ‡ ƒ Ž
¤ "¥ ‡ ˆ
¦€ ‰ ‡ ˆ
§† Ÿš ‘  Ÿ š ƒ"§  …€ ƒ† ‡ ƒ… ˆ#¦€ †$£ ¨… ˆ ˆ 
§ ‘ 
© © © © © © © ’ © ’'
© © © ª ©  ©  © ‘ © ‘ © © € © © © © © © © ©«© ‰ ©0© € ©  © ‡© † © © © © © © © © © ©ˆ © ¬© ‰ © ‰ © ‘ © Ž © Ÿ© š © © © © © © © © © © © © © © £ © © © © © © © © © © © © £ © © © © © © © © © ’ ©­ ©­
®,™ ‡€ ‰
«0‘ Š0€  
ˆ ¬‰ ‰ ‘ Ž Ÿšy’ ’¯ ­°¯ ’ ± “0’
’°­­
“­­­
±"§‡ … Ž
²€ Ž ƒŒ
ˆ ¬‰ ‰ ‘ Ž Ÿšy’ ®¯ ­ ³0¯ ’ ± “ ®
³“­
®­­­
´'«‰ 0€   ƒ ƒŽ2ª ‡€ Ž ‡
ˆ ¬‰ ‰ ‘ Ž Ÿš3­0’¯ ­ µ0¯ ’ ± “°
®­­
¶´­­
°#§‡ … Ž
«‰ · ‡
 Ž  ‘ Ž Ÿšy’ ’¯ ­ ³0¯ ’ ± ´0’
°­­
“®­­
’6¨Ÿ š ˆŽ ƒŒ
«‰ 0€  ‡
 Ž  ‘ Ž Ÿš3­0’¯ ’ ’ ¯ ’ ± ´0’
’­­
®­­­
µ,™ ‡€ ‰
ª ‡€ Ž ‡
 Ž  ‘ Ž Ÿšy’ ¶¯ ­ ³0¯ ’ ± ´ ¶
³ ­ ­ ­8³ ­ ­ ­ ­ ­
¶"¨Ÿ š ˆŽ ƒŒ
²€ ‡‰ ‚˜ ¸ ƒ ƒ 
ˆ ¬‰ ‰ ‘ Ž Ÿšy’ ’¯ ’ ¶0¯ ’ ± ´ ¶
´­­
³­­­
³,¹  ƒŒ  ‘ 
«‰ 0€  ‡†
ˆ ¬‰ ‰ ‘ Ž Ÿš3­0’¯ ­ µ0¯ ’ ± ´ ³
’­­
’“­­
’ ­,ª   ‘ ‘ €
«‰ 0€  ‡†
ˆ ¬‰ ‰ ‘ Ž Ÿš3­0’¯ ­ ³0¯ ’ ± ´ “
® ­ ­ ­ ­|’ ­ ­ ­ ­ ­ ­
’ ¶"¨ ƒ€ … ‰ Œ
š  ˆ‡ †
ˆ ¬‰ ‰ ‘ Ž Ÿšy’ ³¯ ­°¯ ’ ± ´ ´
’ “ ­ ­ ­9° ­ ­ ­ ­ ­
“zº ‡ ‰ ‹
«‰ · ‡
 Ž  ‘ Ž Ÿš3­0’¯ ­ µ0¯ ’ ± ´ ´
“­
’®­­
166
’“
Nun folgt ein Beispiel für die Zusammenfassung von Tabellen mit anschließender Sortierung.
167 ***************** "Join mit Sortierung" ******************** ;
168 TITLE1 ’Zusammenfassen zweier Tabellen’; RUN;
169 TITLE2 ’WHERE-Befehl, um die richtigen zuzuordnen’;
170 TITLE3 ’Sortiert nach Name, Vorname, Geburtsdatum’; RUN;
171 PROC SQL;
172
SELECT dat2.id, dat2.Name, Vorname, Geschl, Gebdat,
173
dat3.VSumme, Geld
174
FROM saskurs.dat2, saskurs.dat3
175
WHERE dat2.id=dat3.id
176
ORDER BY Name, Vorname, Gebdat;
177 QUIT;
NOTE: The PROCEDURE SQL used 0.14 seconds.
»¼ ½ ¾ ¿ ¿ÀÁ ¾ ½ ½ ÀÁBà ÄÀ Å ÀÆǾ È À É É À Á
Ì0Í Î Ï Î0Ð Ñ À ÂÀ Ò É$Ӝ¼ ¿ÔÅ ÀžÆ Å Õ Ò Ö Å × À ÁBü ü ØÆ ÔÁ ÀÁ
ÙØÆ ÖÅ ÀÆ ÖÁ ¾ Õ ÒÚ ¾ ¿ ÀÓÜÛØÆ Á ¾ ¿ ÀÓÝÀ È ¼ Æ Ö½ Ô¾ Ö¼ ¿
Þ ß"Ú ¾ ¿À
ÛØÆ Á ¾ ¿À
ÝÀ½ ÕÒ É À Õ Ò Ö"ÝÀ È ¼Æ Ö½ Ô¾ Ö¼ ¿#ÛÀÆ ½$à Ù¼ ¿ ¿ À
ÝÀ É Ô
á á á á á á á áË'
á á áâá Á áÔ0á Æ á À á Ø áÖ áÖá Å2
á á á á á á ã á ¾á Æ á Å á ¾ á á á á á á á á á á á á¿ á äá Á á Á á É á Å á Õá Ò3
á á á á áå0á Êá æ áå áç0á æ á Ê áè áéá ê á á á á á á á á á áë áå áå á á á á á á á áì áË áå áå
ë,Ñ ¾Æ ØÁ
â0É Â0Æ À Ô
¿ äÁ Á É Å ÕÒyÊ Êæ åêæ Ê è é0Ê
Êêåå
éååå
ç,Ñ ¾Æ ØÁ
ã ¾Æ Å ¾
ÄÀ Å È É Å ÕÒyÊ ìæ å í0æ Ê è Ë ì
í å å å8í å å å å å
ê#ݾ ¼ ÔÅ
âÁ î ¾
ÄÀ Å È É Å ÕÒyÊ Êæ å í0æ Ê è Ë0Ê
êåå
éëåå
è"ݾ ¼ ÔÅ
ïÆ Å ÖÃ
¿ äÁ Á É Å ÕÒyÊ ëæ å í0æ Ê è é ë
íéå
ëååå
ézð ¾ Á ×
âÁ î ¾
ÄÀ Å È É Å ÕÒ3å0Êæ å ç0æ Ê è Ë Ë
éå
Êëåå
Ê Ê'ã Ø À É É ÀÆ
âÁ Ô0Æ À ¾½
¿ äÁ Á É Å ÕÒ
à
à
Êåå
Ê å,ã Ø À É É ÀÆ
âÁ Ô0Æ À ¾½
¿ äÁ Á É Å ÕÒ3å0Êæ å í0æ Ê è Ë é
ë å å å å|Ê å å å å å å
í,ñ À ÖÃ Ø É Ô
âÁ Ô0Æ À ¾½
¿ äÁ Á É Å ÕÒ3å0Êæ å ç0æ Ê è Ë í
Êåå
Êéåå
Ê6ÙÕ Ò ¿Å ÖÃ
âÁ Ô0Æ À ¾
ÄÀ Å È É Å ÕÒ3å0Êæ Ê Ê æ Ê è Ë0Ê
Êåå
ëååå
ì"ÙÕ Ò ¿Å ÖÃ
ïÆ ¾Á òÐ ó Ö Ö Ø
¿ äÁ Á É Å ÕÒyÊ Êæ Ê ì0æ Ê è Ë ì
Ëåå
íååå
Ê ì"Ù ÖÆ ¼ Á Ã
ÇÒ Ø ¿¾ ½
¿ äÁ Á É Å ÕÒyÊ íæ åêæ Ê è Ë Ë
Ê é å å å9ê å å å å å
178
ÊË
Nun folgt ein Beispiel für die Verwendung von ALIAS.
179 ***************** "Join" mit alias ************************** ;
180 TITLE1 ’Zusammenfassen zweier Tabellen’ ; RUN;
181 TITLE2 ’Verwendung von ALIAS fuer die verwendeten Dateien’;RUN;
182 PROC SQL;
183
SELECT dat2.id, dat2.Name, Vorname, Geschl, Gebdat,
184
dat3.VSumme, Geld
185
FROM saskurs.dat2 AS Persdat, saskurs.dat3 AS Gelddat
186
WHERE Persdat.id = Gelddat.id;
187 QUIT;
NOTE: The PROCEDURE SQL used 0.13 seconds.
ô õ ö ÷ ø øùú û÷ ö ö ùúBü ýù þ ùÿ÷ ù ù ú
ùÿ ý0ù ú õ ú ú Lûõ ùÿþ ù
ùÿ ý0ùú ù ùú
÷ ù þ ù ú
÷ øù
ÿ ú ÷ øù
ùö ù ù õÿ ö ÷ õ øùÿ ö õ ø ø ù
ù ù ù ÿ ú 0 ÿ ù ÷ ö ø ! ú ú þ " "
#%$ ÷ÿ ú
& û0ÿ ù ø !ú ú þ ' ( "( ) *&
""
*"""
)÷ õ þ
+ÿ þ ü
ø !ú ú þ ' #( " ,&( ) * #
,*"
#"""
- ú 0ÿ ù þ. ÷ÿ þ ÷
ø !ú ú þ /"&( " 0&( ) *
#""
1-""
÷ õ þ
ú 2 ÷
ýù þ þ ' ( " ,&( ) -&
""
*#""
3 øþ ü
ú 0ÿ ù ÷
ýù þ þ /"&( ( ) -&
""
#"""
0%$ ÷ÿ ú
÷ÿ þ ÷
ýù þ þ ' 1( " ,&( ) - 1
, " " "4, " " " " "
1 øþ ü
+ÿ ÷ú 56 7 ø !ú ú þ ' ( 1&( ) - 1
-""
,"""
,%8 ù ü ú 0ÿ ù ÷ö
ø !ú ú þ /"&( " 0&( ) - ,
""
*""
"% ù ùÿ
ú 0ÿ ù ÷ö
ø !ú ú þ /"&( " ,&( ) - *
# " " " "9 " " " " " "
1 ÿ õ ú ü
ø÷ ö
ø !ú ú þ ' ,( "( ) - * " " ": " " " " "
*; ÷ ú ú 2 ÷
ýù þ þ /"&( " 0&( ) - *"
#""
188
Selbstverständlich sind auch komplexere WHERE-Bedingungen oder Sortierungen möglich.
189 ***************** "Join mit komplexerer WHERE Bedingung" *** ;
190 TITLE1 ’Zusammenfassen zweier Tabellen’; RUN;
191 TITLE2 ’WHERE-Befehl, um die richtigen zuzuordnen und fuer’;
192 TITLE3 ’Personen mit Geld > 10000’; RUN;
193 PROC SQL;
194
SELECT dat2.id, dat2.Name, Vorname,
195
dat3.Geld, VSumme
196
FROM saskurs.dat2, saskurs.dat3
197
WHERE (dat2.id=dat3.id) AND (Geld > 10000);
198 QUIT;
NOTE: The PROCEDURE SQL used 0.1 seconds.
< = > ? @ @AB C? > > AB
D EA F AGH? I A J J A B
M&N O P O&Q R A CA S JT= @VUF AWG F X S Y F Z A B
D= D= [G UB ABV= B UVC= AG
\ AG > [ B AB]@ F YV^A J U`_aK b b b b
c de ? @A
f[G B ? @A
^A J UfAG >g h= @ @A
i i i i i i i iL%
i i i R i ?i G i [i B i i i i i i i i i i j i ?i G i F i ? i i i i i i i i i i i i ik ib ib ib ib ib i i i i i i i i ik ib ib ib
K b%j [ A J J AG
lB U&G A ?>
Kbbbbbb
mbbbb
K nh YG = B D
HS [ @? >
obbbbb
Kpbbb
199
KL
200 ***************** "Join" *********************************** ;
201 TITLE1 ’Zusammenfassen zweier Tabellen’;
202 TITLE2 ’WHERE-Befehl, um die richtigen zuzuordnen und fuer’;
203 TITLE3 ’Personen mit Gebdat zwischen 1960 und 1965’;
204 TITLE4 ’Neue Variable DIFF erzeugen und mit HAVING Teilmenge auswaehlen’;
205 TITLE5 ’Ausgaben sortiert nach DIFF absteigend’;RUN;
206 PROC SQL;
207
SELECT dat2.id, dat2.Name, Vorname, Gebdat,
208
Geld, VSumme,
209
(Geld-VSumme) AS Diff LABEL=’Differenz Geld-VSumme’
210
FROM saskurs.dat2, saskurs.dat3
211
WHERE (dat2.id=dat3.id) AND ("01/JAN/1960"D < Gebdat < "31/DEC/1965"D)
212
HAVING (DIFF >= 20000)
213
ORDER BY DIFF DESCENDING;
214 QUIT;
NOTE: The PROCEDURE SQL used 0.14 seconds.
215
qr s t u uvw xt s s vw
y zv { v|}t ~ v   v w
‚&ƒ „ … „&† ‡ v xv ˆ ‰r uVŠ{ vW| { ‹ ˆ Œ {  v w
yr yr Ž| Šw vwVr w ŠVxr v|
 v| s Ž w vw]u { ŒVv ~ Š t Œ`y z{s ‹ˆ vw`€  ‘ ’ar w ŠW€  ‘ “
” vr v]•t| { t ~  v`–— ˜ ˜
v| y vr  v w`r w ŠVu { Œ`ƒ ™ •— ” V}v {  u vw  vVtr s zt v ˆ  v w
™r s  t ~ vwVs Ž| Œ{ v| Œaw t ‹ˆ
–— ˜ ˜Vt ~ s Œv {  v w Š
– { x xv| vw y
— –” t uv
•Ž| w t uv
v~ r| Œs Š t Œr u
v  Š•v| sš ›r u uv v  Š† • ›r u u v
œ œ œ œ œ œ œ € œ’%
œ œ œ  œ Ž œ v œ  œ  œ vœ | œ œ œ œ œ œ œ œ™œ w œŠ&œ | œ v œ tœ s œ œ œ œ œ œ œ œ œ œ’œ €œ ž œ’ œŸœ ž œ € œ œ‘ œ“9
œ œ œ œ œ € œ’ œ’ œ’ œ’ œ’ œ’ œ œ œ œ œ œ œ œ œ’ œ’ œ’ œ’ œ œ œ œ œ œ œ œœ ¡ œ’ œ’ œ’ œ’
¢%‡ t| Žw
 t| { t
€ £ž ’ Ÿž €  ‘ £.Ÿ ’ ’ ’ ’ ’
Ÿ’’’
‘’’’
€
4.6
CREATE: Erzeugung neuer Tabellen
216 ********************************************************* ;
217 ************** Anlegen neuer Tabellen ******************* ;
218 TITLE1 ’Neue Tabelle mit der Variablen Differenz=Geld-VSumme’; RUN;
219 TITLE2 ’mit dem Befehl CREATE TABLE’;RUN;
220 PROC SQL;
221
CREATE TABLE saskurs.dat4 AS
222
SELECT id, Name, Vorname, Geschl, Geld, VSumme,
223
(Geld-VSumme) AS Diff LABEL=’Differenz Geld-VSumme’
224
FROM saskurs.dat1;
NOTE: Table SASKURS.DAT4 created, with 12 rows and 7 columns.
225 QUIT;
NOTE: The PROCEDURE SQL used 0.17 seconds.
226 *** Ansicht der neuen Tabelle ***;
227 PROC SQL;
228
SELECT * FROM saskurs.dat4;
229 QUIT;
NOTE: The PROCEDURE SQL used 0.07 seconds.
¤ ¥¦ ¥
§¨© ¥ ª ª ¥
«¬ ­V®¥¯°¨¯ ¬ ¨ © ª ¥ ±
² ¬ ³ ³¥¯ ¥ ± ´ µ ¶¥ ª ®· ° ¸¦ « «¥
«¬ ­V® ¥ «`» ¥ ³¥ ¼ ª
½¾ ¿ À§¿
§ À»Á ¿
¹º
² ¬ ³ ³¥¯ ¥± ´
 ²¤ ¨ «¥
°Ã¯ ± ¨ «¥
¶¥Ä ż ª ¥ Å ¼ ­
¶¥ ª ®°¥¯ ÄÆ ¸¦ « «¥¶¥ ª ®· ° ¸¦ « « ¥
Ç Ç Ç Ç Ç Ç Ç Ç È3
Ç Ç Ç¸Ç Å Ç ¼ Ç«Ç ¬ Ç­Ç ´ Ç Ç Ç Ç Ç Ç Ç ÇÀÇ ± Ç®&Ç ¯ Ç ¥ Ç ¨ Ç Ç Ç Ç Ç Ç Ç Ç Ç Ç ÇÉÇ ¥ Ç ¬ Ç © Ç ª Ç ¬ Ç ÅÇ ¼ Ç Ç Ç Ç Ç Ç Ç ÇÊ Çº Ǻ Ǻ Ç Ç Ç Ç Ç Ç Ç Ç Ç Ç È Çº Ǻ Ç Ç Ç Ç Ç Ç Ç Ç Ç Ç¹ ÇË Çº Ǻ
¹¸Å ¼ «¬ ­´
̯ ¨± Í· Î ­ ­ Ã
« ϱ ± ª ¬ ż
кºº
Ѻº
Êкº
Ê%» ¨¯ ñ
À&ª ³&¯ ¥ ®
« ϱ ± ª ¬ ż
񼼼
ÈÓºº
Êʺº
Ð%Ô ¥ ­´ Ã ª ®
À± ®&¯ ¥ ¨Ä
« ϱ ± ª ¬ ż
ÈÒºº
鼼
Èкº
Ò;Á ¨ ± Õ
À± Ö ¨
É¥ ¬ © ª ¬ ż
Èʺº
Òº
ȹҺ
Ñ À± ®&¯ ¥ à ­ ­¬.× ¨¯ ¬ ¨
« ϱ ± ª ¬ ż
¹Ñºº
漼
¹Êºº
Ó¶¨ ¦ ®¬
À± Ö ¨
É¥ ¬ © ª ¬ ż
Òʺº

ÐѺº
Ø%» ¨¯ ñ
× ¨¯ ¬ ¨
É¥ ¬ © ª ¬ żÙÐ º º º º º
кºº
ÊËѺºº
˶¨ ¦ ®¬
̯ ¬ ­´
« ϱ ± ª ¬ ż
ʺºº
ÐÒº
¹ÒÒº
È º%× Ã ¥ ª ª ¥¯
À± ®&¯ ¥ ¨Ä
« ϱ ± ª ¬ ż'È º º º º º º
ʺººº
ËÓ º º º º
È È × Ã ¥ ª ª ¥¯
À± ®&¯ ¥ ¨Ä
« ϱ ± ª ¬ ż
鼼
Æ
Æ
È ¹¸ ­¯ ¦ ± ´
§¼ à «¨ Ä
« ϱ ± ª ¬ żÚÓ º º º º º
ÈÒººº
ÑØÒººº
230 TITLE1 ’saskurs.dat4 normal als SAS-Datei verwendbar’; RUN;
231 TITLE2 ’Beispiel: PROC MEANS’; RUN;
232 PROC MEANS DATA=saskurs.dat4;
233
CLASS geschl;
234
VAR Diff;
235 RUN;
236
NOTE: The PROCEDURE MEANS used 0.1 seconds.
Û ÜÛ Ý Þ ß Ûà áÜ â ãaä åß æ Ü çVÜ ç Û]è éèê ë Ü â ì í
îìß ïìä áð Üß
ó ì í Û ô í ì çõ÷ö ø ù ú`û ü é&ý è
éä Ü ç þÛ íÛÿÜß í Üð ç ì õ÷ë ë í ìß ìä ì ç áê ÿ èÞ æ æì
ü è ú ý
ùð Û ý
û ì Üä
è â á`ë ì î
û íä í æÞ æ
û Ü í æÞ æ
êêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêê
ï&ì í ð ç í ã ã
ò ò ò à ò ã àã ò ñ à à æ ä ä ç í Úñ ñ à Úã&ò à ã ò ã à à êêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêê
ñ&ò
4.7
INSERT und SET: Einfügung neuer Beobachtungen
237 ************* Einfügen einer neuen Beobachtung ****************;
238 TITLE1 'Einfügen einer neuen Beobachtung';RUN;
239 TITLE2 'mit dem Befehl INSERT INTO';RUN;
240 PROC SQL;
241
INSERT INTO saskurs.dat4
242
SET id=13,
243
Name="Nobel",
244
Vorname="Alfred",
245
Geschl=2,
246
Geld=5.E8,
247
VSumme=.,
248
Diff=.;
NOTE: 1 row was inserted into SASKURS.DAT4.
249 QUIT;
NOTE: The PROCEDURE SQL used 0.2 seconds.
250 *** Ansicht der neuen Tabelle ***;
251 PROC SQL;
252
SELECT * FROM saskurs.dat4;
253 QUIT;
NOTE: The PROCEDURE SQL used 0.07 seconds.
254
! " # $ % &' (! * (+ * " ' ,.- / 0 1 23- / 2 4
5 6
- 57/ % * 8# % * 9: &' , & ' (
9 , +78 :<; 0! * * =9 , +<> 8 0! * * ? ? ? ? ? ? ? ? @A
? ? ?0? & ? ' ?* ? ?(? 6 ? ? ? ? ? ? ? ?BC? ?+D? ? ? % ? ? ? ? ? ? ? ? ? ? ?E? ? ? $ ? , ? ? &? ' ? ? ? ? ? ? ? ?F ?G ?G ?G ? ? ? ? ? ? ? ? ? ? @ ?G ?G ? ? ? ? ? ? ? ? ? ?) ?H ?G ?G
)70& ' * (6
I % J> 4 ( ( #
LGGG
MGG
FLGG
* K , &'
FN" % #
BD, D +
OGGG
@PGG
FFGG
* K , &'
LNQ (6 # , +
BC +D %:
@OGG
@GG
@LGG
* K , &'
OSR % BC T %
E $ , &'
@FGG
OG
@)OG
MUBC +D # ( (V % %
,
&
'
)
M
G
G
F
G
G
)
FGG
*K
P=9% ! +
BC T %
E $ , &'
OFGG
PGG
LMGG
WN" % #
V % %
E $ , &'XL G G G G G
LGGG
FHMGGG
H79% ! +
I (6
FGGG
LOG
)OOG
* K , &'
@ GNV # , , BC +D %:
FGGGG
HP G G G G
* K , &'Y@ G G G G G G
@ @UV # , , BC +D %:
@GG
;
;
* K , &'
@ )70 ( ! 6
2' # * % :
,
&
Z
'
P
G
G
G
G
G
@
O
G
G
G
M
W
O
G
G
G
*K
@ FN/ # $ ,
BD, D +
;
;
* K , &'UO G G G G G G G G
))
4.8
UPDATE und SET: Änderung von Variablen oder einzelner Werte
255 ************* Ändern der Werte **************************;
256 TITLE1 'Umrechnung der Werte fuer Differenz in Euro';
257 TITLE2 'mit dem Befehl UPDATE';RUN;
258 PROC SQL;
259
UPDATE saskurs.dat4
260
SET Diff = ROUND(Diff/1.95583 , 0.01);
NOTE: Invalid arguments to the ROUND function have caused the function to return a
missing value.
NOTE: 13 rows were updated in SASKURS.DAT4.
261 QUIT;
NOTE: The PROCEDURE SQL used 0.14 seconds.
262 *** Ansicht der neuen Tabelle ***;
263 PROC SQL;
264
SELECT id, Name, Vorname, Diff LABEL="Differenz Geld-VSumme in Euro"
265
FROM saskurs.dat4;
266 QUIT;
NOTE: The PROCEDURE SQL used 0.05 seconds.
267
[ \D] ^ _ ` a b a cd ^]feD^] g ^hb ^]ji k h h^] ^ a lkamb ] n
\k gd ^ \rq ^ h^ ` s[ t i uvm
i k h h^] ^a l
w^ s d<x yzb \ \ ^
{ i7| } \^
yn] a } \^
k am b] n
~ ~ ~ ~ ~ ~ ~ ~ A
~ ~ ~z~ _ ~ ` ~\~ k ~g~ l ~ ~ ~ ~ ~ ~ ~ ~uC~ a ~dD~ ] ~ ^ ~ } ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~  ~€ ~ ~oƒ~ ‚ ~ „ ~…
o7z_ ` \k gl
†] }a ‡x ˆ g g n
 „ p ƒ‚ p ‰
pNq }] na
uDs hD] ^ d
 Š „<‚ o Š
€Nt ^ gl n s d
uCa dD] ^ }‹
„ …ƒ‚ 
…SŒ } a c
uCa  }
Š p ‰ƒ‚  
ŠUuCa dD] ^ n g gkŽ }] k }
  „ …ƒ‚ ‰ „
„=w} b dk
uCa  }
o p …DD‚ ‰ €
Nq }] na
Ž }] k }
o  o €„C‚ Š
‰7w} b dk
†] k gl
 p  pƒ‚ „ ‰
 NŽ n ^ s s ^]
uCa dD] ^ }‹
€ ‰ … ‰ … p‚ 
 UŽ n ^ s s ^]
uCa dD] ^ }‹
‚
 o7z g] b a l
v` n \} ‹
p …  o p €‚ ‰
 pN| n ‘ ^ s
uDs hD] ^ d
‚
op
268 ************* Ändern der Werte **************************;
269 TITLE2 'Aenderung einzelner Werte mit dem Befehl UPDATE';RUN;
270 PROC SQL;
271
UPDATE saskurs.dat4
272
SET Geld = 10000000, Name="Prof. Nobel"
273
WHERE ( Name="Nobel" and Vorname="Alfred" );
NOTE: 1 row was updated in SASKURS.DAT4.
274 QUIT;
NOTE: The PROCEDURE SQL used 0.14 seconds.
275 *** Ansicht der neuen Tabelle ***;
276 PROC SQL;
277
SELECT id, Name, Vorname, Geld
278
FROM saskurs.dat4;
279 QUIT;
NOTE: The PROCEDURE SQL used 0.05 seconds.
280
’ “” •– — ˜”˜ “” ˜™” ˜ š ˜ ”› ˜ œ  ž Ÿ ¡š ” —
¤D˜” ¥˜™ š ” —˜ “ ” ¦ ˜ §” ˜™f¨D˜™ ¡ ˜©“ ¡¥ ˜ ©r› ˜ •˜ §ª « ¬ ¤­ ’
® ¬7¯ ž ©˜
°œ™ ” ž ©˜
±˜ § ¥
² ² ² ² ² ² ² ² ³A
² ² ²´² Ÿ ² ²©² “ ²¡² ¦ ² ² ² ² ² ² ² ²¤C² ” ²¥D² ™ ² ˜ ² ž ² ² ² ² ² ² ² ² ² ² ² ² ² ²µ ²¶ ²¶ ²¶
¢7´Ÿ ©“ ¡¦
·™ ž” ¸¹ º ¡ ¡ œ
£¶¶¶
µN› ž™ œ”
¤D§ •D™ ˜ ¥
»¶¶¶
£N« ˜ ¡¦ œ § ¥
¤C” ¥D™ ˜ ž¼
³»¶¶
»S½ ž ” —
¤C” ¾ ž
³µ¶¶
¿U¤C” ¥D™ ˜ œ ¡ ¡“À ž™ “ ž
¢¿¶¶
Á=±ž š ¥“
¤C” ¾ ž
»µ¶¶
ÂN› ž™ œ”
À ž™ “ ž
£¶¶¶¶¶
Ã7±ž š ¥“
·™ “ ¡¦
µ¶¶¶
³ ¶NÀ œ ˜ § § ˜™
¤C” ¥D™ ˜ ž¼
³¶¶¶¶¶¶
³ ³UÀ œ ˜ § § ˜™
¤C” ¥D™ ˜ ž¼
³¶¶
³ ¢7´ ¡™ š ” ¦
­ œ ©ž ¼
Á¶¶¶¶¶
³ µN«™ œ •Äů œ ˜ §Æ¤D§ •D™ ˜ ¥
³¶¶¶¶¶¶¶
¢£
4.9
ALTER und ADD: Einfügen neuer Variablen
281 *************** Einfügen neuer Variablen ****************;
282 TITLE1 'Einfügen neuer Variablen in bestehenden Datensatz';RUN;
283 TITLE2 'mit dem Befehl ALTER TABLE';RUN;
284 TITLE3 'Zuweisen von Werten ist mit UPDATE und INSERT möglich';RUN;
285 PROC SQL;
286
ALTER TABLE saskurs.dat4
287
ADD Schaden NUM
LABEL="Schaden" FORMAT=schadf.,
288
Notiz
CHAR(6) LABEL="Notiz",
289
Datum
DATE
LABEL="Falldatum" FORMAT=DDMMYY10.;
NOTE: Table SASKURS.DAT4 has been modified, with 10 columns.
290 * Zuweisen von Werten mit UPDATE oder INSERT;
291 * hier erfolgt die Zuweisung mit INSERT INTO;
292
INSERT INTO saskurs.dat4
293
SET
id=14,
294
Name="Sauer",
295
Vorname="Brigitte",
296
Geld=.,
297
Vsumme=500,
298
Schaden=1,
299
Notiz="Unfall",
300
Datum="01MAY1999"D;
NOTE: 1 row was inserted into SASKURS.DAT4.
301 QUIT;
NOTE: The PROCEDURE SQL used 0.36 seconds.
302 TITLE1 'Den geänderten Datensatz dat4 mit den neuen Variablen';
303 TITLE2 'und einer zusätzlichen Beobachtung anzeigen';RUN;
304 TITLE1 'Der geänderte Datensatz dat4 mit den neuen Variablen';
305 TITLE2 'und einer zusätzlichen Beobachtung anzeigen';RUN;
306 PROC SQL;
307
SELECT id, Name, Vorname, Vsumme, Schaden, Notiz, Datum
308
FROM saskurs.dat4;
309 QUIT;
NOTE: The PROCEDURE SQL used 0.05 seconds.
Ç ÈÉÊ È ËÉ ÌÈÍ Î ÈÉÇ Ï ÎÈ É Ð Ï ÎÑÌ Ï Î ÒÓ Ô ÎÌÈ ÉÉ ÈÕ ÈÉ×ÖÏÍ Ô ÏØ Ù È É
Õ É ÌrÈ ÔÉ ÈÍjÑÕ Ð Ë Î Ñ Ù Ô Ü Ý ÈÉÞ È ß Ø Ï Ü Ý ÎÕ É ÊrÏ É Ñ È Ô Ê ÈÉ
à Ç7á Ï ÓÈ
ÖßÍ É Ï ÓÈ
ÖÈÍ Ð<â ãÕ Ó ÓÈ=ãÜ Ý Ï Ì ÈÉ=á ß Î Ô Ñ
ä Ï Ù Ù ÌÏ ÎÕ Ó
å å å å å å å å æA
å å åãå Ü å Ý åÓå Ô åÎå Ñ å å å å å å å åçCå É åÌDå Í å È å Ï å å å å å å å å å å å å å å å å æ åè åèê
å å å å å å é<å â åçëå â å å å å å å å å å å å å å å å å å å å å å å â
Ú7ãÜ Ý ÓÔ ÎÑ
äÍ ÏÉ éì í Î Î ß
î è èêé<â çëâ
â
ïNÞ ÏÍ ßÉ
çDÙ ðDÍ È Ì
æ ñ è èêé<â çëâ
â
ÒNò È ÎÑ ß Ù Ì
çCÉ ÌDÍ È ÏÐ
æ è èêé<â çëâ
â
ÛSó Ï É Ê
çCÉ ô Ï
Û èêé<â çëâ
â
îUçCÉ ÌDÍ È ß Î ÎÔõ ÏÍ Ô Ï
ï è èêé<â çëâ
â
ñ=öÏ Õ ÌÔ
çCÉ ô Ï
ñ è èêé<â çëâ
â
÷NÞ ÏÍ ßÉ
õ ÏÍ Ô Ï
Ò è è èêé<â çëâ
â
ø7öÏ Õ ÌÔ
äÍ Ô ÎÑ
Ò Û èêé<â çëâ
â
æ èNõ ß È Ù Ù ÈÍ
çCÉ ÌDÍ È ÏÐ
ï è è è èêé<â çëâ
â
æ æUõ ß È Ù Ù ÈÍ
çCÉ ÌDÍ È ÏÐ
âùé<â çëâ
â
æ Ú7ã ÎÍ Õ É Ñ
úÝ ß ÓÏ Ð
æ Û è è èêé<â çëâ
â
æ ïNòÍ ß ðâÅá ßØ È ÙÆçDÙ ðDÍ È Ì
âùé<â çëâ
â
æ Ò7ãÏ Õ ÈÍ
ÞÍ Ô Ê Ô Î Î È
Û è èûô ÏýüÉ ð Ï Ù ÙýèDæ þ è ÛCþ æ ø ø ø
ÚÛ
4.10 PROC SQL Pass-Through Facility
Die PROC SQL Pass-Through Facility ermöglicht es, direkt auf Daten aus Datenbanken wie z.B. AS/400,
DB2, DB2/2, DB2 for UNIX DEC Rdb, Informix, INGRES, ODBC, ORACLE, SQL/DS, sowie
SYBASE und SQL Server zuzugreifen. Um die PROC SQL Pass-Through Facility verwenden zu können,
ist eine Lizensierung der entsprechenden SAS/ACCESS Software für das verwendete data base
management system (DBMS) notwendig. Die SAS-Syntax hat die folgende Struktur.
PROC SQL;
CONNECT TO dbms (dbms_options);
SELECT *
FROM CONNECTION TO dbms
( database-specific SQL statements );
EXECUTE ( database-specific non-SELECT statement ) BY dbms;
DISCONNECT FROM dbms;
Im folgenden werden drei Methoden zur Berechnung von statistischen Kenngrößen gegenüber gestellt.
Hierbei wird dBASE als Beispiel verwendet, da viele Programme für PCs Dateien im dBase-Format
abspeichern können, z.B. Microsoft Excel.
1. Daten stehen in einer SAS-Datei
2. Daten stehen in einer dBASE-Datei, Kopieren der Daten mit SAS/ACCESS nach SAS und
dann Auswertung in SAS
3. Daten stehen in einer dBASE-Datei, Auswertung mit der PROC SQL Pass-Through Facility,
ohne die Daten in eine SAS-Datei abzuspeichern.
Die PROC SQL Pass-Through Facility hat den Vorteil,. daß bei großen Datensätzen die Daten nur einmal
gehalten werden müssen, was zu einem geringeren Speicherbedarf und evtl. zu schnelleren Antwortzeiten
führen kann.
Demgegenüber ist als Nachteil zu nennen, daß die PROC SQL Pass-Through Facility mehrfach
verwendet werden muß, wenn mehrere Auswertungen für diese Daten aus ein und derselben externen
Datei gewünscht werden. Außerdem sind so komplexere Fragestellungen (komplexere StatistikProzeduren) nicht durchführbar.
4.10.1 Daten stehen in einer SAS-Datei
310 ******** Vergleich: Daten-Import versus PROC SQL PASS-THROUGH FACILITY ******;
311 TITLE1 "PROC MEANS: Summe und Mittelwert fuer Vsumme berechnen aus SAS-DATEI";
312 TITLE2 "für Geschlecht=2 und Geld >= 3000";
313 RUN;
314 PROC MEANS DATA=saskurs.dat1 N SUM MEAN;
315
WHERE ( Geschl=2 AND Geld >= 3000 );
316
VAR Vsumme;
317 RUN;
318
NOTE: The PROCEDURE MEANS used 0.05 seconds.
ÿ ! #" $ &% ' ( )
,.- ! ! / * - 0 /#1 2 2 2
& " 3 ." " 4
5 6 $ &7 "
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
8
9: : 8 2;7 2 2
< 8 8 2;7 2 2
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*+
4.10.2 Verwendung von SAS/ACCESS
319 ********************************************************************;
320 TITLE1 "Methode 2: Zunaechst dBASE-Daten in SAS-Datei kopieren, dann Auswertung
in SAS";
321 TITLE2 "PROC MEANS: Summe und Mittelwert fuer Vsumme berechnen aus SAS-DATEI";
322 TITLE3 "für Geschlecht=2 und Geld >= 3000";
323 RUN;
324 /* Erzeuge access descriptor */
325 PROC ACCESS DBMS=DBF
326
ACCDESC = saskurs.access
327
FUNCTION = C;
NOTE: CREATE statement required to replace ACCESS.ACCESS.
328
CREATE saskurs.access.ACCESS;
NOTE: Existing descriptor will be replaced at next CREATE or RUN.
329
PATH = "d:\saskurs\dat1.DBF";
329
/* dBASE-file
*/
330
DROP 1;
330
/* DROP DELETE_FLG */
331
FORMAT Gebdat ddmmyy10.;
331
/* sonst: ddmmyy8. */
332
LIST ALL;
DBF File: d:\saskurs\dat1.DBF
Function: CREATE Descriptors- access: ACCESS view:
Item
Column Name SAS Name Format
1
DELETE_FLG
$1.
* NON DISPLAY *
2
ID
12.4
3
NAME
$12.
4
VORNAME
$12.
5
GESCHL
12.0
6
GEBDAT
DDMMYY10.
7
GELD
9.0
8
VSUMME
12.0
333
RUN;
NOTE: The access descriptor SASKURS.ACCESS was written.
NOTE: The PROCEDURE ACCESS used 0.44 seconds.
334 /* Erzeuge view descriptor
*/
335 PROC ACCESS DBMS=DBF
336
ACCDESC = saskurs.access;
337
CREATE saskurs.view.VIEW;
338
SELECT ALL;
339
UNIQUE = YES;
NOTE: UNIQUE names is now ON.
340
LIST VIEW;
DBF File: d:\saskurs\dat1.DBF
Function: CREATE Descriptors- access: ACCESS view: VIEW
Item
Column Name SAS Name Format
2
ID
ID
12.4
* SELECTED *
3
NAME
NAME
$12.
* SELECTED *
4
VORNAME
VORNAME $12.
* SELECTED *
5
GESCHL
GESCHL
12.0
* SELECTED *
6
GEBDAT
GEBDAT
DDMMYY10.
* SELECTED *
7
GELD
GELD
9.0
* SELECTED *
8
VSUMME
VSUMME
12.0
* SELECTED *
341
RUN;
NOTE: The view descriptor SASKURS.VIEW was written.
NOTE: The PROCEDURE ACCESS used 0.28 seconds.
342 PROC ACCESS
/* Erzeuge SAS-Datei
*/
343
VIEWDESC = saskurs.view
/* Angabe view descriptor */
344
OUT
= saskurs.dat1neu;
344
/* Angabe SAS-Datei
*/
345
RUN;
NOTE: The data set SASKURS.DAT1NEU has 12 observations and 7 variables.
NOTE: The PROCEDURE ACCESS used 0.15 seconds.
346 /* CHECK, OB DATEN-TRANSFER KORREKT DURCHGEFUEHRT WURDE */
347 /*
348 PROC CONTENTS DATA = saskurs.dat1neu;
349 RUN;
350 PROC PRINT DATA = saskurs.dat1neu LABEL;
351 RUN;
352 */
353 PROC MEANS DATA=saskurs.dat1neu N SUM MEAN;
354
WHERE ( Geschl=2 AND Geld >= 3000 );
355
VAR VSumme;
356 RUN;
357
NOTE: The PROCEDURE MEANS used 0.05 seconds.
= > ?@ A B>#C;DEF G H > I @ J ?B K LMNO P H ?> G#QG$M LMRO P H ? > QS A T Q >U >GRVB HG G.LF J W>U ?F G XQ G#M LM
Z [ \ ]= N L^ MDMF _ _>F G B= Q ? ? > ` W>U ?aF >UbJ F _ _ >c >U > I @ G >G#HF J$M LM&O P Ld Ne
afU.g >J I @ ` > I @ ?h CF G Bg > ` Bi h#j k k k
L&G H ` lJ QJ.bHU Q Hc ` >4D5bM m = = N$bM m = = N
^
MF _
=>HG
OOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
n
oY Y n k;p k k
q n n k;p k k
OOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
4.10.3Verwendung der PROC SQL Pass-Through Facility
358 ********************************************************************;
359 TITLE1 "Methode 3: PROC SQL Pass-Through Facility";
360 TITLE2 "Mit PROC SQL direkt die Daten aus der dBASE-Datei auswerten";
361 TITLE3 "PROC MEANS: Summe und Mittelwert fuer Vsumme berechnen";
362 TITLE4 "für Geschlecht=2 und Geld >= 3000";
363 RUN;
364 PROC SQL;
365 CONNECT TO ODBC ( "DSN=dBase-Dateien;DBQ=d:\saskurs;FIL=dBase4;");
366 SELECT
367
COUNT(Vsumme) AS Anzahl LABEL="Anzahl VSumme" ,
368
SUM(Vsumme)
AS Summe LABEL="Summe Vsumme" ,
369
MEAN(Vsumme) AS Mittel LABEL="Mittelwert Vsumme" FORMAT=6.1
370
FROM CONNECTION TO ODBC ( SELECT Geschl, Geld, Vsumme
371
FROM dat1 )
372
WHERE ( Geschl=2 AND Geld >= 3000 );
373 ;
374 QUIT;
NOTE: The PROCEDURE SQL used 0.27 seconds.
CY
r s tu v ws#x;y{z | } ~ €#z ‚ ƒ ƒ„ …u† v ‡ ˆ u‰ ‚ Š ‹ Œ ‹ t 
r ‹ tz | } ~ €$w‹† s  tw‹ s‘ ‚ ts’#‚ ‡ ƒ$ws†$‘ “ ‚ ƒ s„ ‘ ‚ ts ‹‚‡ ƒ ”s† t s’
z | } ~r • –— y‡ ˜ ˜s‡ ’ wr ‹ t t s Œ ”s† t™‡ s†šƒ ‡ ˜ ˜ s› s† s Š u ’ s’
™œ†. sƒ Š u Œ s Š u tž Ž‡ ’ w s Œ wŸ ž#x –’ ¡ ‚u Œ¢‡ ˜ ˜ s£r ‹ t t s Œ ”s† t
š ‡ ˜ ˜s¤šƒ ‡ ˜ ˜ s
šƒ ‡ ˜ ˜ s
¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥¦¨
¥ ¥ ¥ ¥ ¥ ¥§¥ © ¥ © ¥¦ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ª ¥¦ ¥¦ ¥ ;¥ « ¥ Ž
Man beachte, daß für diesen kleinen Beispieldatensatz die folgenden Rechenzeiten auftraten:
SAS/ACCESS mit PROC MEANS:
0.92 Sekunden,
PROC SQL Pass Through Facility:
0.27 Sekunden.
5. Literatur
1. SAS Institute Inc., Getting Started with the SQL Procedure,Version 6, First Edition, Cary, NC: SAS
Institute Inc., 1994, 78 pp.
2. SAS Institute Inc., SAS Guide to the SQL Procedure: Usage and Reference, Version 6, First Edition,
Cary, NC: SAS Institute Inc., 1989, 210 pp.
3. SAS Institute Inc., SAS/ACCESS Software Changes and Enhancements: SQL Procedure PassThrough Facility, Version 6, Cary, NC: SAS Institute Inc., 1994, 44 pp.
In SAS Version 6.12 für Windows sind im HELP-Menü unter SAMPLE PROGRAMS unter dem Eintrag
SQL zahlreiche Beispielprogramme verfügbar. Zudem sind mit HELP PROC SQL viele Informationen
online verfügbar. Schließlich sind im HELP-Menü unter
→ Online Documentation
→ Base SAS Documentation
→ SQL Prodecure
→ PROC SQL Code Reference
→ SQL Query Window
weitere Informationen online verfügbar. Zum Schluß sei noch darauf hingewiesen, daß mittels
→ Globals
→ ACCESS
→ Query
bzw. mit
→ Globals
→ Present
→ Create Report
viele einfache Tabellen und Reports, sogar mit Farbdefinition, per Mausclick erstellt werden können.
Herunterladen