1 Doz. Dr. Georg Quaas Institut für Empirische Wirtschaftsforschung Universität Leipzig Übung - Lösungsvorschläge Datenanalyse mit E-Views, Access & Excel, SPSS und LISREL Schwerpunkt 2.4: Arbeit mit Datenbanken (4): Das Monaden-Konzept Anwendung der Logic des Querying Ziel der Sitzung: Erzeugen eines Datenfiles, das geeignet ist, die Korrelation zwischen Internationalem Krieg und Status einer Großmacht zu berechnen. Schritt 1 (Query22): Produzieren Sie eine Tabelle State-Years mit Hilfe der Tabelle „States2011“ und der Tabelle YEARS! Welche Logik steht hinter der Produktion der State-Years? Lösung: Fügen Sie beide Tabellen in einem Query ohne Relation zusammen! Problem am Beispiel Canadas: Existiert erst ab 1920, aber es treten Datensätze für alle Jahre auf Die folgenden Lösungsvarianten kontrollieren anhand der Extension: 1. start > = years – falsche Auswahl 2. start < = years - besser, aber ein Jahr fehlt 3. start <= years +10000 4. Fall 265 Æ end > years Technische Umsetzung wie beim Übungsbeispiel System_Membership: Start < [YEARS]![DATECODE]+10000 End > [YEARS]![DATECODE] SQL: SELECT States2011_sup.stateabb, States2011_sup.ccode, YEARS.YEAR, States2011_sup.start AS sysmem_on, States2011_sup.end AS sysmem_off, States2011_sup.unit FROM States2011_sup, YEARS WHERE (((States2011_sup.start)<[YEARS]![DATECODE]+10000) AND ((States2011_sup.end)>[YEARS]![DATECODE])); Kontrolle durch Anzahl der Fälle: 14976 Umbenennen von Start und End in Sysmem_on Sysmem_off Abspeichern Exkurs: Bestimmen Sie die Anzahl der Staaten pro Jahr! Lösung (Query23): Erstellen eines neuen Querys: den letzten Query einbinden. Variable; YEAR Unit Unit bekommt den Namen NumStates Sum anklicken, Gruppierung bei Units auf Summe stellen SQL: SELECT Query22.YEAR, Sum(Query22.unit) AS Summevonunit FROM Query22 GROUP BY Query22.YEAR; Schritt 2: Erzeugen eines Files, das die Informationen von State_Years und Major_Years vereinigt (dazu muss erst einmal die Variable „Major“ erzeugt werden): Teilaufgabe 2.1 (Query24): Erzeugen einer Tabelle Major_Years analog zu State_Years. 2 Für ein effektives Arbeiten kopieren Sie die Bedingung! Benennen Sie die beiden Variablen Start und End um in Major_on und Major_off Anzahl der Fälle: 1160 SQL: SELECT Majors2011_sup.ccode, YEARS.YEAR, Majors2011_sup.stateabb, Majors2011_sup.start AS Major_on, Majors2011_sup.end AS Major_off, Majors2011_sup.unit FROM Majors2011_sup, YEARS WHERE (((Majors2011_sup.start)<[YEARS]![DATECODE]+10000) AND ((Majors2011_sup.end)>[YEARS]![DATECODE])) ORDER BY Majors2011_sup.ccode, YEARS.YEAR; Teilaufgabe 2.2 (Query25): Führen Sie die beiden Tabellen in einem Query zusammen! Anzahl der Fälle: 14976 SQL: SELECT Query22.stateabb, Query22.ccode, Query22.YEAR, Query22.sysmem_on, Query22.sysmem_off, Query24.Major_on, Query24.Major_off, Query22.unit, IIf([Query24]![unit]=1,1,0) AS Major FROM Query22 LEFT JOIN Query24 ON (Query22.YEAR = Query24.YEAR) AND (Query22.ccode = Query24.ccode); Teilaufgabe 2.3 (noch Query25): Dummy-Variable für Major Lösung: Definition der Variablen: Major: Wenn([Query16]![Unit]=1;1;0) SQL: SELECT Query22.stateabb, Query22.ccode, Query22.YEAR, Query22.sysmem_on, Query22.sysmem_off, Query24.Major_on, Query24.Major_off, Query22.unit, IIf([Query24]![unit]=1,1,0) AS Major FROM Query22 LEFT JOIN Query24 ON (Query22.YEAR = Query24.YEAR) AND (Query22.ccode = Query24.ccode); Schritt 3: Fügen Sie die Internationalen Kriege aus der Tabelle Query21T hinzu! Lösung (Query26 und 27): 1. Schritt: Inspizieren Sie die Tabelle Query21T 2. Kombinieren Sie das zuletzt erzeugte Query mit der Variable Majors mit der Tabelle Query21T (Query26) 3. Stellen Sie fest, wie viele Zweitkriege stattfanden. 4. Konstruieren Sie eine Funktion War_UW mit Hilfe der Funktion: Wenn(([Query21T]![UW_WR1] Ist Nicht Null) Oder ([Query21T]![UW_WR2] Ist Nicht Null);1;0) 5. Exportieren Sie das Query27 in SPSS und berechnen Sie die Korrelation zwischen Major und Ons_War! SQL (Query26): SELECT Query25.stateabb, Query25.ccode, Query25.YEAR, Query25.sysmem_on, Query25.sysmem_off, Query25.Major_on, Query25.Major_off, Query25.unit, Query25.Major, Query21T.ONS_WR1, Query21T.ONS_WR2, Query21T.UW_WR1, Query21T.UW_WR2 FROM Query25 LEFT JOIN Query21T ON (Query25.YEAR = Query21T.YEAR) AND (Query25.ccode = Query21T.StateNumb); SQL (Query27): SELECT Query25.stateabb, Query25.ccode, Query25.YEAR, Query25.sysmem_on, Query25.sysmem_off, Query25.Major_on, Query25.Major_off, Query25.unit, Query25.Major, Query21T.ONS_WR1, Query21T.ONS_WR2, Query21T.UW_WR1, Query21T.UW_WR2, IIf(([Query21T]![UW_WR1] Is Not Null) Or ([Query21T]![UW_WR2] Is Not Null),1,0) AS War_UW FROM Query25 LEFT JOIN Query21T ON (Query25.YEAR = Query21T.YEAR) AND (Query25.ccode = Query21T.StateNumb); 3