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?

Respuestas a la pregunta(2)

Su respuesta a la pregunta