У меня есть этот безумно длинный запрос, который дает мне среднюю группу по марке для каждого года, месяца и недели. Это прекрасно работает, но я слишком долго хочу знать, есть ли лучший способ сделать это и сохранить несколько строк кода. Я использую несколько «С как», потому что мне нужно отображать средние значения по неделям, месяцам, годам. Мне нужно среднее значение цены элементов, составленных триплетом id_item ||name_item ||марка, имеющая цену> = 1.
WITH
YEAR_2018 AS(
SELECT BRAND, AVG(PRICE)AVG_2018, 0 AS AVG_2019, 0 AS JAN, 0 AS FEB...
FROM
(SELECT ID_ITEM || NAME_ITEM || BRAND, SUM(PRICE), BRAND,
FROM MY TABLE
WHERE EXTRACT (YEAR FROM DATE) = 2018
GROUP BY ID_ITEM || NAME_ITEM || BRAND, BRAND)
GROUP BY BRAND)
YEAR_2019 AS(
SELECT BRAND, 0 AS AVG_2018, AVG(PRICE)AVG_2019, 0 AS JAN, 0 AS FEB...
FROM
(SELECT ID_ITEM || NAME_ITEM || BRAND, SUM(PRICE), BRAND,
FROM MY TABLE
WHERE EXTRACT (YEAR FROM DATE) = 2019
GROUP BY ID_ITEM || NAME_ITEM || BRAND, BRAND)
GROUP BY BRAND)
JAN_2019 AS(...)
...
SELECT YEAR_2018.BRAND, YEAR_2018 .AVG_2018, YEAR_2019.AVG_2019 ...
FROM YEAR_2018 LEFT JOIN YEAR_2019 ON YEAR_2018.BRAND = YEAR_2019.BRAND
LEFT JOIN JAN_2019 ON JAN_2019.BRAND = YEAR_2018.BRAND ...
BRAND | AVG_2018 | AVG_2019 | AVG_JAN | AVG_FEB | ...
==============
X 13.2 ...
-----------------
Y 25.6 ...
-----------------