рассчитать N процент от значения столбца по верхним n процентам строк - PullRequest
0 голосов
/ 04 сентября 2018

У меня есть две колонки. один user_ids, а другой - производственная стоимость для каждого пользователя. Я хочу знать процент производства топ-10 процентов наиболее активных пользователей.

Я попробовал с Lead over, но так как я не знаю, как это работает, я не смог получить правильный результат.

вот образец моего стола

userid       | production
42539973@N00 | 6572
13407304@N05 | 6765
50780708@N02 | 6958
92607898@N00 | 7826
52996072@N04 | 7889
57868312@N00 | 8226
90484572@N00 | 8444
26650236@N07 | 8802
26650236@N08 | 88802
26650236@N09 | 98802

Например, 10 процентов пользователей - это 1, и если мы заказываем их на основе значения «продукции», то последний пользователь и эти пользователи произвели почти 39 процентов всей продукции, которая рассчитывается как сумма производства 10 процентов. od пользователей, деленное на сумму всей производственной стоимости.

1 Ответ

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

Поскольку вы не показали нам ожидаемый результат, я только что создал SQL для фильтрации 10% наиболее продуктивных пользователей с суммой их производства, деленной на производительность всех пользователей.

 with cnt as (select round(count(1)*0.1) no_users, sum(production) production_sum from your_table),
      users as (select userid, distance production, 
                     sum(production) over (order by production desc rows between unbounded preceding and 0 FOLLOWING) production_10,
                     row_number() over (order by production desc) rnk,
                     no_users,
                     production_sum
                from your_table, cnt)


 select no_users, 
        production_10, 
        production_sum, 
        round(production_10/production_sum*100,2) prc_production  
   from users 
  where no_users=rnk
...