来自表的排序日期[重复]

问题描述 投票:-3回答:1

我在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"
postgresql greatest-n-per-group
1个回答
0
投票

您的描述和预期结果不一致。说明说“每个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;
© www.soinside.com 2019 - 2024. All rights reserved.