我在PostgreSQL中有下表,我想显示每个fname的最大销售数字以及相关的销售日期。请为我提供解决方案代码。
CREATE TABLE CookieSale (
ID VARCHAR(4),
fname VARCHAR(15),
sale FLOAT,
saleDate DATE
);
INSERT INTO CookieSale
VALUES
('E001', 'Linda', 1000.00, '2016-01-30'),
('E002', 'Sally', 750.00, '2016-01-30'),
('E003', 'Zindy', 500.00, '2016-01-30'),
('E001', 'Linda', 150.00, '2016-02-01'),
('E001', 'Linda', 5000.00, '2016-02-01'),
('E002', 'Sally', 250.00, '2016-02-01'),
('E001', 'Linda', 250.00, '2016-02-02'),
('E002', 'Sally', 150.00, '2016-02-02'),
('E003', 'Zindy', 50.00, '2016-02-02');
我尝试过
SELECT fname, MAX(sale), saleDate
FROM CookieSale;
我需要结果像
"Lynda | 5000.00 | 2016-02-01"
您的描述和预期结果不一致。说明说“每个fname的最大销售数字”,但预期结果仅表示最大的总销售量。而且两者都与标题无关。请尝试保持一致。我将描述实际需要的内容。为此,在子选择内使用窗口函数RANK,而外部选择仅使用等级1。
select fname, sale, saledate
from ( select cs.*, rank() over (partition by fname order by fname, sale desc) rk
from cookiesales cs
) csr
where rk = 1;