SQL Abfrage Top 5 + Rest summiert

Steffi

Neuer Benutzer
Beiträge
3
Hallo zusammen,
ich habe ein kleines Problem mit meiner Abfrage. Ich benötige eine Abfrage in der in den ersten 5 Zeilen die Top 5 Ergebnisse (Bsp. Versicherungen) & deren Vermittlungen aufgeführt sind und in der 6. Zeile die restlichen Versicherungen mit der Summe deren Vermittlungen.
Ich glaube/denke, das das mit einer Unterabfrage geht... bekomme aber die 6. Zeile nicht in mein Ergebnis... hat mir jemand hier einen Tip... vielen lieben Dank & Grüße





 
Werbung:

akretschmer

Datenbank-Guru
Beiträge
9.160
Hallo zusammen,
ich habe ein kleines Problem mit meiner Abfrage. Ich benötige eine Abfrage in der in den ersten 5 Zeilen die Top 5 Ergebnisse (Bsp. Versicherungen) & deren Vermittlungen aufgeführt sind und in der 6. Zeile die restlichen Versicherungen mit der Summe deren Vermittlungen.
Ich glaube/denke, das das mit einer Unterabfrage geht... bekomme aber die 6. Zeile nicht in mein Ergebnis... hat mir jemand hier einen Tip... vielen lieben Dank & Grüße


MySQL? Schaut irknwie anders aus. Deiner Beschreibung nach suchst Du UNION, mit dem Du Deine TOP5 und eine weitere Abfrage (Aggregation aller außer Top5) verkleisterst.
 

Steffi

Neuer Benutzer
Beiträge
3
Hi, ich wußte - um ehrlich zu sein - nicht, wo ich meine Anfrage zuordnen sollte ;o)
Mit Union hatte ich es schon versucht bekomme aber nur "Null" heraus. Konntest Du mit meiner Abfrage (png - File) etwas anfangen?
 
Werbung:

akretschmer

Datenbank-Guru
Beiträge
9.160
Hi, ich wußte - um ehrlich zu sein - nicht, wo ich meine Anfrage zuordnen sollte ;o)
Du wirst doch wissen, daß es kein MySQL ist. Und Du wirst doch imstande sein, das richtige Unterforum zu finden, oder?

Mit Union hatte ich es schon versucht bekomme aber nur "Null" heraus. Konntest Du mit meiner Abfrage (png - File) etwas anfangen?

Nein. Ich mag keine Bilder.

Code:
test=*# select * from foo;
 s
----
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
(10 rows)

test=*# select *, row_number() over () from (select * from foo order by s desc limit 5) x union (select sum(s), null from foo where s not in (select s from foo order by s desc limit 5)) order by row_number nulls last;
 s  | row_number
----+------------
 10 |          1
  9 |          2
  8 |          3
  7 |          4
  6 |          5
 15 |
(6 rows)
 
Oben