如何删除空值并使其在 Postgresql 中达到 10 行?

How can I remove the null values and make it to 10 rows in Postgresql?

我是 Postgresql 新手。我有一个名为 'sales' 的 table。

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个不同的产品)???

我会说 GROUP BY 子句应该是

GROUP BY prod

否则每个不同的行你得到一行 quant,这不是你想要的。