Ascolta, ti ripeto che lo puoi fare in SQL puro oppure con (un po') di codice Java. La scelta sta a te, ovviamente.
Con SQL puro, ti basta una select con sub-select.
Con Java, idem come detto prima, dipende da come ordini (o no) i dati. Se prendi i dati originali senza alcuna modifica/logica da SQL, puoi ordinare per X e Y, quindi a parità di X/Y tieni man mano in una variabile Java il valore max di Z e quando sei a "rottura" di X o Y hai il max di Z che puoi usare esattamente come dicevo prima tenendo una "mappa" X --> sommatoria
Non è banale, il codice va scritto bene (ragionando, con logica!) e devi anche considerare correttamente la "rottura" dopo l'ultimo record.
Consiglio: PRIMA prova a livello di SQL puro.


Rispondi quotando