Oracle SQL-запрос с использованием раздела - PullRequest
0 голосов
/ 18 сентября 2018

У меня есть этот запрос:

select a.name, count(distinct numClient)
from a
group by a.name;

Я хотел бы добавить еще один столбец, который будет считать для каждой строки сумму предыдущих строк:

JONES     3      0
SMITH     5      3
JOHN      10     8
.....
KEN       12     365

Можешь помочь? Я предполагаю, что должен использовать раздел, но не очень хорошо понимаю.

Ответы [ 2 ]

0 голосов
/ 18 сентября 2018

Вам вообще не нужен подзапрос:

select a.name, count(distinct numClient),
       (sum(count(distinct numClient)) over (order by count(distinct numClient)) -
        count(distinct numClient)
       ) as running_sum
from a
group by a.name;
0 голосов
/ 18 сентября 2018

Предполагая, что есть столбец для указания порядка, в котором рассчитывается совокупная сумма, вы можете использовать

select name,cntClient,sum(cntClient) over(order by orderCol rows between unbounded preceding and 1 preceding) as cumCntClient
from (select a.name, count(distinct numClient) as cntClient
      from a
      group by a.name
     ) t
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...