postgresql - 从表中排序日期
问题描述
我在 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 的最大销售数字”,但预期结果仅表示总体最大值。两者都与标题无关。请尝试更加一致。
我将描述作为实际想要的。为此,在子选择中使用 Window 函数 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;
推荐阅读
- angular - 验证 Angular 中的重复输入字段
- javascript - Vue - 嵌套组件不会更新其数据并重新渲染
- python - 如何将输出保存在嵌套字典中?
- apache-spark - Pyspark:如何改善空间交叉点?
- java - Point2D 等于阈值内
- c# - 将数组作为参数传递时更改数组的初始值
- rest - URI 中作为 {id} 的特殊关键字,用于标识特殊资源
- suitescript - 为什么我的 record.setValue({}) 没有在 afterSubmit 事件中设置值?
- django - 如何在 django 中自动更新数据?
- jquery - 带有复选框的多个下拉菜单