Seleccionar un subconjunto de filas que excede un porcentaje de los valores totales
Tengo una tabla con clientes, usuarios e ingresos similares a los siguientes (en realidad miles de registros):
Customer User Revenue
001 James 500
002 James 750
003 James 450
004 Sarah 100
005 Sarah 500
006 Sarah 150
007 Sarah 600
008 James 150
009 James 100
Lo que quiero hacer es devolver solo los clientes que más gastan y que representan el 80% de los ingresos totales para el usuario.
Para hacer esto manualmente, ordenaría a los clientes de James por sus ingresos, calcularía el porcentaje del total y el porcentaje total acumulado, luego solo devolvería los registros hasta el punto en que el total acumulado llegue al 80%:
Customer User Revenue % of total Running Total %
002 James 750 0.38 0.38
001 James 500 0.26 0.64
003 James 450 0.23 0.87 <- Greater than 80%, last record
008 James 150 0.08 0.95
009 James 100 0.05 1.00
He intentado usar un CTE pero hasta ahora he quedado en blanco. ¿Hay alguna manera de hacer esto a través de una sola consulta en lugar de hacerlo manualmente en una hoja de Excel?