"Richtig" wäre nach meinem Bauchgefühl mit Windowing Funktionen zu arbeiten:
https://www.firebirdsql.org/file/com...3windowing.pdf
Dabei setzt man eine partition auf die gewünschten Gruppen und kann dann je Gruppe mit Aggregatfunktionen arbeiten.
Vielleicht kann hier im Forum das für Firebird (3) kurz in
SQL giessen.
p.s. ich habe Windowing mit MS SQL / Oracle / DB2 bereits eingesetzt und eine Gruppenmenge sollte damit problemlos und vor allem sehr performant realisierbar sein. Vielleicht kann ich es in den nächsten Tagen an einer Beispiel-DB zeigen.