Redshift - Нахождение средневзвешенного значения - PullRequest
0 голосов
/ 04 мая 2020

Я пытаюсь рассчитать средневзвешенное значение, используя приведенные ниже данные

project_name, project_type, sales
project_a, type_1, 2
project_a, type_2, 4
project_a, type_3, 6
project_b, type_1, 4

Ожидаемый результат:

project_name, project_type, sales, wgt_average
project_a, type_1, 2, 0.17
project_a, type_2, 4, 0.33
project_a, type_3, 6, 0.5
project_b, type_1, 4, 1

Ниже приведен SQL, который у меня на месте:

select project_name, project_type, count(project_type) * sum(sales) / nullif(count(sales),0)
from table 

Вышеуказанные SQL дали мне счет по каждому имя_проекта / тип_проекта. Как я могу получить средневзвешенное значение для project_name, комбинации project_type

1 Ответ

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

Мы можем использовать SUM в качестве аналитической функции c здесь:

SELECT
    project_name,
    project_type,
    sales,
    1.0*sales / SUM(sales) OVER (PARTITION BY project_name) As wgt_average
FROM yourTable
ORDER BY
    project_name,
    project_type;

demo of screen capture below

Демо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...