Среднее количество в месяц на таблицу для конкретной строки SQL - PullRequest
1 голос
/ 21 марта 2019

У меня есть таблица ниже:

        MONTHNUMBER | MonthName | ProductName | QTY | AMOUNT | AVG qty/mos|
      |-------------|-----------|-------------|-----|--------|------------|
      | 1           | January   | Thingamabob | 11  | 100.00 |            |
      | 1           | January   | Widgets     | 18  | 150.00 |            |
      | 2           | February  | Thingamabob | 10  | 100.00 |            |
      | 2           | February  | Widgets     | 6   | 150.00 |            |
      | 3           | March     | Thingamabob | 8   | 100.00 |            |
      | 3           | March     | Widgets     | 20  | 150.00 |            |
      | 4           | April     | Thingamabob | 13  | 100.00 |            |
      | 4           | April     | Widgets     | 21  | 150.00 |            |
      | 5           | May       | Thingamabob | 10  | 100.00 |            |
      | 5           | May       | Widgets     | 17  | 150.00 |            |

Можно ли получить среднее QTY для MonthName каждой строки и добавить его в столбец AVG qty / mos?

Что я хотелпоскольку таблица должна быть такой:

        MONTHNUMBER | MonthName | ProductName | QTY | AMOUNT | AVG qty/mos|
      |-------------|-----------|-------------|-----|--------|------------|
      | 1           | January   | Thingamabob | 11  | 100.00 |    14.5    |
      | 1           | January   | Widgets     | 18  | 150.00 |    14.5    |
      | 2           | February  | Thingamabob | 10  | 100.00 |      8     |
      | 2           | February  | Widgets     | 6   | 150.00 |      8     |
      | 3           | March     | Thingamabob | 8   | 100.00 |     14     |
      | 3           | March     | Widgets     | 20  | 150.00 |     14     |
      | 4           | April     | Thingamabob | 13  | 100.00 |    16.5    |
      | 4           | April     | Widgets     | 21  | 150.00 |    16.5    |
      | 5           | May       | Thingamabob | 10  | 100.00 |    13.5    |
      | 5           | May       | Widgets     | 17  | 150.00 |    13.5    |

Я попробовал приведенный ниже скрипт и получил бы тот же результат, что и QTY.

SUM(QTY)/COUNT(DISTINCT(MonthName))

Я надеюсь, что это возможно с SQL.

Ответы [ 2 ]

4 голосов
/ 21 марта 2019

Вы можете использовать avg оконную функцию, чтобы сделать это.

select t.*,avg(qty) over(partition by monthnumber) as avg_qty_per_mnth
from tbl t 
3 голосов
/ 21 марта 2019

вы также можете использовать месяц в разделе

    select a.*,avg(QTY) over(partition by MonthName) as avgqty
    from tab a

Но я думаю, что лучше использовать month and year, оба должны быть в partition by, потому что январь месяц того года, который может понадобиться и вашемув будущем

...