1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| WITH tmptab AS
(
SELECT 'Client1' AS client, 'cmd1' AS commande, 10 AS nb
FROM "PUBLIC".dual UNION ALL
SELECT 'Client1' AS client, 'cmd2' AS commande, 5 AS nb
FROM "PUBLIC".dual UNION ALL
SELECT 'Client2' AS client, 'cmd1' AS commande, 3 AS nb
FROM "PUBLIC".dual UNION ALL
SELECT 'Client2' AS client, 'cmd2' AS commande, 2 AS nb
FROM "PUBLIC".dual UNION ALL
SELECT 'Client2' AS client, 'cmd3' AS commande, 5 AS nb
FROM "PUBLIC".dual
)
SELECT t1.client,
sum(t1.nb)
OVER (PARTITION BY t1.client) CmdTotal,
t1.commande,
t1.nb,
sum(t1.nb)
OVER (PARTITION BY t1.client
ORDER BY t1.nb DESC
RANGE UNBOUNDED PRECEDING) CmdCumul,
round(t1.nb / sum(t1.nb) OVER (PARTITION BY t1.client), 2) PctNB,
round
(
sum(t1.nb)
OVER (PARTITION BY t1.client
ORDER BY t1.nb DESC
RANGE UNBOUNDED PRECEDING) /
sum(t1.nb) OVER (PARTITION BY t1.client)
,
2
) PctCumul
FROM tmptab t1
ORDER BY t1.client ASC, t1.nb DESC; |
Partager