子查询问题-需要获取总和的平均值

时间:2020-04-24 16:42:25

标签: postgresql

我有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 :(得分:0)

我知道了。 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;