gpt4 book ai didi

sql - PostgreSQL 从行中选择最大值

转载 作者:行者123 更新时间:2023-11-29 14:18:59 25 4
gpt4 key购买 nike

我有以下数据:

CREATE TABLE offer (
id INTEGER,
product_id VARCHAR,
created_at TIMESTAMP,
amount INTEGER,
PRIMARY KEY (id));

INSERT INTO offer (id, product_id, created_at, amount)
VALUES
(1, '123', '2016-03-12', 990),
(2, '136', '2016-02-01', 1056),
(3, '111', '2016-01-01', 1000),
(4, '123', '2016-01-02', 500);

我想获取每个 product_id 金额最高的行。如果我采用这些前面的行,我想获得 ID:2、3 和 1,因为第 1 行包含的数量大于第 4 行。

 id | product_id |     created_at      | amount
----+------------+---------------------+--------
2 | 136 | 2016-02-01 00:00:00 | 1056
3 | 111 | 2016-01-01 00:00:00 | 1000
1 | 123 | 2016-03-12 00:00:00 | 990

我试过类似的东西,但我不确定:

SELECT id, product_id, created_at, amount 
FROM offer
ORDER BY 4, 2 DESC, 1, 3

而且我还不能现场试用。

最佳答案

如果我没理解错的话,你可以使用distinct on:

select distinct on (product_id) o.*
from offers o
order by product_id, amount desc;

distinct on 是一个 Postgres 扩展。在本例中,它为每个 product_id 返回一行。特定行是金额最大的行,由 amount desc 确定。

关于sql - PostgreSQL 从行中选择最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36608771/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com