Schwierige SQL-Abfrage mit aufeinanderfolgenden Werten

8

Ich muss eine relativ leicht zu erklärende, aber (angesichts meiner etwas eingeschränkten Fähigkeiten) schwer zu schreibende SQL-Abfrage durchführen.

Nehmen wir an, wir haben eine ähnliche Tabelle wie diese:

%Vor%

Beachten Sie, dass exam_no und date nicht notwendigerweise so zusammenhängen, wie man es von dem von mir gewählten Beispiel erwarten würde.

Die Abfrage, die ich jetzt ausführen muss, ist wie folgt:

  • Von der letzten Prüfung ( exam_no = 3) finden Sie alle fehlgeschlagenen Schüler ( John Doe , Ryan Smith und Mary Lee ).
  • Für jeden dieser Studenten finden Sie das Datum des ersten Satzes der fortlaufend fehlgeschlagenen Prüfungen. Eine andere Möglichkeit wäre: für jeden dieser Studenten das Datum der ersten scheiternden Prüfung zu finden, die nach der letzten bestandenen Prüfung kommt. (Schau dir die Pfeile in der Tabelle an.)

Die resultierende Tabelle sollte etwa so aussehen:

%Vor%

Wie kann ich eine solche Abfrage durchführen?

Danke für Ihre Zeit.

    
Gabriel 04.07.2012, 13:34
quelle

4 Antworten

4

Sie können die Tatsache ausnutzen, dass jemand, der die letzte Prüfung bestanden hat, seit dem letzten bestandenen Test keine Prüfung bestanden hat. Daher reduziert sich das Problem auf die Feststellung der ersten seit dem letzten bestandenen Prüfung:

%Vor%

Sehen Sie es auf sqlfiddle .

    
eggyal 04.07.2012, 13:52
quelle
0

Ich sollte eine Unterabfrage verwenden, die die zuletzt bestandene Prüfung abruft, etwas wie:

%Vor%     
Puggan Se 04.07.2012 13:45
quelle
0

Das ist genug:

%Vor%     
aF. 04.07.2012 13:48
quelle
0

Die Bedingung, nach der du fragst, ist gut für nichts, du kannst es ohne es tun. Hier ist das Arbeitsbeispiel.

%Vor%

Dies erzeugt dieses Ergebnis

%Vor%     
Muhammad Raheel 04.07.2012 13:51
quelle

Tags und Links