SQL: Teilmengen klassifizieren

Aus DBWiki
Wechseln zu: Navigation, Suche

Zurück zur Übersicht



Je nach verwendetem SQL-Dialekt lassen sich Ergebnisse einer Aggregierung durch Verwendung einer CASE-Anweisung oder der Switch()-Funktion in gewünschte Ergebnisse übertragen.


Es soll z.B. der Punktedurchschnitt je Seminar und Teilnehmer in Noten entsprechend eines Schemas umgewandelt werden.

Lösung für Jet-SQL

Hinweis für Access-Anwender

Um die folgenden Abfragen selbst testen zu können, müssen die Tabellen der Übungsdatenbank vorhanden sein.

SELECT sem_nr,
       ma_nr,
       Switch( Avg( punkte ) >= 22, 1,
               Avg( punkte ) >= 19, 2,
               Avg( punkte ) >= 16, 3,
               Avg( punkte ) >= 13, 4,
               Avg( punkte ) >= 10, 5,
               Avg( punkte ) <  10, 6 ) AS [note]
FROM   seminar
GROUP  BY sem_nr, ma_nr

Allgemeine Lösung

SELECT sem_nr,
       ma_nr,
       CASE WHEN avg( punkte ) >= 22 THEN 1
            WHEN avg( punkte ) >= 19 THEN 2
            WHEN avg( punkte ) >= 16 THEN 3
            WHEN avg( punkte ) >= 13 THEN 4
            WHEN avg( punkte ) >= 10 THEN 5
            WHEN avg( punkte ) <  10 THEN 6 END AS note
FROM   seminar
GROUP  BY sem_nr, ma_nr
ORDER  BY 1, 2

Hier ist ein entsprechender DBFiddle.

sem_nr ma_nr note
SALA101 7499 5
SALA101 7521 4
SALA101 7654 5
SALC108 7521 4
SALC108 7654 2



Zurück zur Übersicht