SQL: Erstellen von gleich großen Datensammlungen

Aus DBWiki
Wechseln zu: Navigation, Suche

Zurück zur Übersicht



Mittels sklalarer Unterabfrage können Werte den einzelnen Datensätzen zugeordnet werden, die dann mittels Division und Aufrunden entsprechend der gewünschten Größe der Datensammlung klassifiziert werden können.


Es sollen z.B. alle Mitarbeiter anhand ihrer ma_nr in Gruppen zu je 3 Datensätzen zusammengefasst 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 int( num ) - ( num - int( num ) > 0 ) AS gruppe,
       ma_nr,
       ma_name
FROM   ( SELECT ma_nr,
                ma_name,
                ( SELECT Count(*)
                  FROM   mitarbeiter
                  WHERE  ma_nr <= m.ma_nr ) / 3 AS num
         FROM mitarbeiter AS m) AS v

Der Ausdruck int( num ) - ( num - int( num ) > 0 ) entspricht dabei der Aufrundungsfunktion.

Lösung für PostgreSQL

SELECT CEIL( ROW_NUMBER() OVER ( ORDER BY ma_nr ) / 3.0 ) AS gruppe,
       ma_nr,
       ma_name
FROM   mitarbeiter

Die Lösung kann in diesem DBFiddle eingesehen werden.

gruppe ma_nr ma_name
1 7369 Schmidt
1 7499 Allard
1 7521 Wecker
2 7566 Johann
2 7654 Mertens
2 7698 Blank
3 7782 Kühne
3 7788 Scheidt
3 7839 König
4 7844 Dreher
4 7876 Adam
4 7900 Jakobs
5 7902 Fuhrmann
5 7934 Müller



Zurück zur Übersicht