проблема подзапроса - нужно получить среднюю сумму - PullRequest
0 голосов
/ 24 апреля 2020

У меня есть 2 таблицы

sales table
weekly sales, store, date

store table
store, type, size

моя таблица продаж имеет несколько лет, несколько магазинов и несколько типов. Я пытаюсь получить средние продажи по кв. Футам для каждого типа магазина в год. У меня есть подзапрос, который показывает продажи по кв. Футам для каждого магазина, но у меня возникли проблемы, затем я свернул его в свой основной запрос, чтобы получить среднее значение по типу

enter image description here

Что-нибудь выскакивает из моего последнего запроса?

SELECT 
    date_part('year', sales.date) AS year, 
    stores.type,
    AVG(sales_by_sqft)
FROM
    (SELECT 
     SUM((sales.weekly_sales)/stores.size) AS sales_by_sqft
    FROM SALES
    INNER JOIN stores ON sales.store = stores.store
    GROUP BY sales.store) AS sq
FROM sales
INNER JOIN stores ON sales.store = stores.store
WHERE date_part('year', date) = 2012
GROUP BY year, stores.type;

получение синтаксической ошибки во втором операторе FROM

1 Ответ

0 голосов
/ 25 апреля 2020

Я понял это. AVG не работает на деньги. Как только я изменил этот тип данных на целое, все стало на свои места

SELECT
    year,
    type,
    ROUND(AVG(sales_by_sqft),2)AS avg_sales_by_sqft
FROM 
(SELECT
        date_part('year', sales.date) AS year,
        stores.type,
        sales.store,
        stores.size,
        SUM(sales.weekly_sales) AS total_sales,
        SUM(sales.weekly_sales)/ AVG(stores.size) AS sales_by_sqft
    FROM sales
    INNER JOIN stores ON sales.store = stores.store
    GROUP BY year, stores.type, sales.store, stores.size) AS sq
GROUP BY 1,2
ORDER BY 1,3 DESC;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...