我是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);
类似这样的东西:“>
现在,我想找到“最有利”的月份(当时大部分产品售出)和每种产品的“最优惠”月份(售出的产品数量最少)。
结果应该是这样的:
我输入了
SELECT prod product, MAX(CASE WHEN rn2 = 1 THEN month END) MOST_FAV_MO, MAX(CASE WHEN rn1 = 1 THEN month END) LEAST_FAV_MO FROM ( SELECT *, ROW_NUMBER() OVER(PARTITION BY prod ORDER BY quant ) rn1, ROW_NUMBER() OVER(PARTITION BY prod ORDER BY quant DESC) rn2 FROM sales ) x WHERE rn1 = 1 or rn2 = 1 GROUP BY prod,quant;
然后每种产品都有空值,总共有20行:
所以我如何删除这些行中的空值并使行的总数为10(总共有10种不同的产品????
我是Postgresql的新手。我有一张叫“ sales”的桌子。创建表销售(cust varchar(20),prod varchar(20),day整数,month整数,year ...
我想说GROUP BY
子句应该是
GROUP BY prod