Redshift - Найдите процент вклада по категориям - PullRequest
0 голосов
/ 28 мая 2020

У меня есть данные в следующем формате:

product, person
prod_a, person_1
prod_a, person_2
prod_a, person_3
prod_b, person_1

Я пытаюсь найти процент, внесенный каждым человеком на продукт. Ожидаемый результат:

product, person, prct
prod_a, person_1, 0.33
prod_a, person_2, 0.33
prod_a, person_3, 0.33
prod_b, person_1, 1

1 Ответ

1 голос
/ 28 мая 2020

Вы можете использовать оконные функции:

select
    product,
    person,
    1.0 * count(*) over(partition by product, person) 
        / count(*) over(partition by product) as prct
from mytable

Если, как показано в ваших данных примера, нет повторяющихся (product, person) кортежей, то это немного проще:

select
    product,
    person,
    1.0 / count(*) over(partition by product) as prct
from mytable
...