【发布时间】:2019-10-07 04:49:45
【问题描述】:
每个人。我是 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', 'Pepsi', 22, 1, 2006, 'CT', 4404);
insert into sales values ('Emily', 'Fruits', 11, 1, 2000, 'NJ', 4369);
insert into sales values ('Helen', 'Milk', 7, 11, 2006, 'CT', 210);
insert into sales values ('Emily', 'Soap', 2, 4, 2002, 'CT', 2549);
insert into sales values ('Bloom', 'Eggs', 30, 11, 2000, 'NJ', 559);
.... 总共有 498 行。 以下是该表的概述:
现在我想计算每种产品的最大和最小销售量,以及它们对应的客户(购买该产品的人)、日期(即最大和最小销售量的日期)以及销售所在的州发生了交易。 以及相应产品的平均销量。
组合起来应该是这样的:
它应该有 10 行,因为总共有 10 个不同的产品。
我试过了:
select prod,
max(quant),
cust as MAX_CUST
from sales
group by prod;
但它返回了一个错误,并说客户应该在 group by 中。但我只想按产品类型分类。
此外,我怎样才能将 max_q 及其客户、日期、状态 与 min_q 及其客户、日期、状态 以及 AVG_Q 通过他们的产品名称? 我真的感到很困惑!
【问题讨论】:
-
对于未来的问题:样本数据最好显示为formatted text。请参阅here,了解有关如何创建漂亮表格的一些提示。
标签: postgresql join pivot subquery inner-join