Das Problem hier ist eher die 2-stufige Sortierung.

Hierfür musst du ein temporäres Zwischenergebnis erstellen, dass du dann für die Sortierung wieder verknüpfst:

with
xGroupSum as (
select kunde, sum(Umsatz) as GUmsatz
from MyFile
group by Kunde)

select a.Kunde, Artikel, min(GUmsatz) as GUmsatz, sum(Umsatz) as AUmsatz A
from myfile inner join xGroupSum B on a.Kunde=B.Kunde
group by Kunde, Artikel
order by GUmsatz, AUmsatz, Kunde

Je nach Schachtelungstiefe benötigst du entsprechend viele Zwischenergebnisse und Verknüpfungen.

Performance ?
Naja, das muss man ausprobieren.