如何在Postgresql中找到其他状态的平均数量和其他产品的平均数量?

我有一张叫“ sales”的桌子。

create table sales
    (
        cust    varchar(20),prod    varchar(20),day integer,month   integer,year    integer,state   char(2),quant   integer
    );
insert into sales values ('Bloom','Pepsi',2,12,2001,'NY',4232);
insert into sales values ('Knuth','Bread',23,5,2005,'PA',4167);
insert into sales values ('Emily',22,1,2006,'CT',4404);
insert into sales values ('Emily','Fruits',11,2000,'NJ',4369);
insert into sales values ('Helen','Milk',7,210);
insert into sales values ('Emily','Soap',4,2002,2549);
insert into sales values ('Bloom','Eggs',30,559);

..共有498行。这是此表的概述:

如何在Postgresql中找到其他状态的平均数量和其他产品的平均数量?

现在,我想获取其他州的平均数量和其他产品的平均数量。结果表应如下所示:

如何在Postgresql中找到其他状态的平均数量和其他产品的平均数量?

这将需要在“组外”进行聚合,我知道如何在组内进行聚合,但是我不知道该怎么写...有人可以帮助我吗?

erpangm 回答:如何在Postgresql中找到其他状态的平均数量和其他产品的平均数量?

您可以使用windows function in PostgreSQL

select cust,prod,state,avg(quant) OVER (PARTITION BY cust) cust_avg,avg(quant) OVER (PARTITION BY state) other_state_avg,avg(quant) OVER (PARTITION BY prod) other_prod_avg from sales 
,

好的,这里是子查询:

select cust,(select avg(quant) from sales si where si.cust=so.cust)  cust_avg,(select avg(quant) from sales si where si.state=so.state) other_state_avg,(select avg(quant) from sales si where si.prod=so.prod) other_prod_avg 
from sales so
本文链接:https://www.f2er.com/3089782.html

大家都在问