Несколько фильтров, агрегация и группировка в одном столбце - PullRequest
1 голос
/ 22 октября 2019

Я хочу получить среднюю цену за единицу для города и за год из следующей таблицы.

   Date         City     Units  Price
   10/23/2018   Leon       1    1088
   2/27/2018    NewYork    1    1312
   4/19/2017    Texas      3    3909
   4/19/2017    London     1    1303
   4/19/2019    NewYork    3    3909
   2/12/2018    Leon       1    1251
   4/7/2017     Leon       3    3510
   3/20/2019    London     1    1650
   12/18/2017   Texas      1    1358
   2/18/2019    Leon       1    1088
   7/3/2017     NewYork    2    2782
   8/8/2019     Texas      1    830
   4/5/2018     London     2    3739
   1/29/2018    Londres    1    1169
   8/9/2019     Texas      1    1130

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

 Year   City       AvgPrice
 2017   Leon       1170
 2017   London     1303
 2017   New York   1391
 2017   Texas      1330.5
 2018   London     1519.25
 2018   New York   1312
 2018   Leon       1169.5
 2019   Leon       1088
 2019   London     1650
 2019   New York   1303
 2019   Texas      1390

Я пробовал группировать по городам, ноэто усложняется в год. Спасибо за вашу помощь.

1 Ответ

0 голосов
/ 22 октября 2019

Похоже, что должно работать следующее:

SELECT
    YEAR([Date]) [Year]
    , City
    , CAST(CAST(SUM(Price) AS decimal(19, 2)) / SUM(Units) AS decimal(19, 2)) AverageUnitPrice
FROM YourTable
GROUP BY
    YEAR([Date])
    , City

(Чтобы получить точный результат визуально, вы можете разыграть как float вместо decimal(19, 2) (внешний CAST также не будетнеобходимо).)

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