Zum Inhalt springen

  • Beiträge
    112
  • Kommentare
    541
  • Aufrufe
    12.313

Etwas SQL zur Entspannung


XPectIT

790 Aufrufe

In ca. 2,5 Wochen ist die Klausur in 01618 OOP und viel Vorbereitungsarbeit liegt hinter mir. Deshalb dachte ich mir im Vorgriff auf die anstehende Statistikauswertung:

"Wie kannst du die Daten mehrere Semester vergleichen?"

Klar, wenn man die Statistiken der einzelnen Semester vergleicht, geht das schon. Also wie viel Aufwand in Semester 1 und wieviel im zweiten ... aber sowas reicht mir nicht.

Ich wollte eine Möglichkeit auch die Zeiträume innerhalb der Semester zu vergleichen. Also eine Antwort auf die Frage: "Sind die Ausschläge in den Lernzeitkurven nach etwa gleichen Zeitspannen?" - So gab es im ersten Semester einen Einbruch um die 15. und 16. Woche des Studiums. Interessanterweise ist im Wintersemester dann Weihnachten/Neujahr, aber im Sommersemester ist nach ca. 14 Wochen auch Geschwindigkeit aus dem Lernen genommen und das ist Ende Juni / Anfang Juli.... aber egal.

Um diese Art der Fragen von meinen Lerndaten beantwortet zu haben, braucht es einen Zähler der pro Semester die verstrichenen Kalenderwochen zählt. Sowas gebe ich sicher nicht beim Datenerfassen ein.

Ein Datensatz besteht bei mir aus

Datum; Fach; Thema; Dauer; Ort; Semester

01.08.10; 01141; KE 1; 30; BK; S1

16.04.11; 01142; KE 2; 75; BK; S2

02.12.11; 01801; KE 3; 30; Hmb; S3

03.12.11; 01609; KE 1; 95; BK; S3

Aus dem Datum die Kalenderwoche zu berechnen ist noch relativ einfach dafür gibts in SQL die Funktion week('datum'). Aber aus z.B. KW 32 lässt sich nur schwer rauslesen welche Semesterwoche das war. Hier musste etwas her. Mit Gruppierungen arbeiten wollte ich nicht, da ich alle Datensätze erhalten will um sie später mit Pivot-Tabellen zu analysieren.

Ich habe mich dann an das alte "laufende Nummer Problem" erinnert - In einer Abfrage eine Spalte, die für jeden Datensatz eine laufende Nummer ausgibt, erzeugen - und das etwas angepasst.

Der fragliche Teil der Abfrage liest sich jetzt so:

SELECT

( SELECT COUNT( DISTINCT ( "KW" ) )

FROM "_ab_mit_KW" AS "tmp"

WHERE "tmp"."Datum" <= "tab"."Datum"

AND "tmp"."Teil" = "tab"."Teil"

) AS "SWeek"

, "tab".*

FROM "_ab_mit_KW" AS "tab"

Übersetzt etwa: Suche raus wieviele Datensätze im gleichen Semester ein kleineres Datum haben und zähle wieviele verschiedene Einträge im Feld "KW" zu finden sind. - Schreibe den Wert in das generierte Feld "SWeek"

Damit ist es jetzt ein leichtes die einzelnen Semesterwochen zu vergleichen, da ich die Kurven jetzt alle ins gleiche Diagramm zeichnen lassen kann. Ziel erreicht.

Soviel dazu ;) Ich bin immerwieder erstaunt wieviele Informationen man aus den 6 Einzeldaten ziehen kann. Jetzt werde ich mal wieder einen Datensatz generieren, damit die Statistik auch gefüllt wird.

3 Kommentare


Empfohlene Kommentare

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden


×
  • Neu erstellen...