Таблица и несколько строк для начала. (Вы должны включить это в свой вопрос.)
create table bank2001 (
id integer,
date date,
asset integer,
primary key (id, date)
);
insert into bank2001 values
(1, '6/30/2001', 333860),
(1, '3/31/2001', 336896),
(1, '9/30/2001', 349343),
(2, '6/30/2001', 451297),
(2, '3/31/2001', 411421),
(2, '9/30/2001', 430178),
(3, '6/30/2001', 106506),
(3, '3/31/2001', 104196),
(3, '9/30/2001', 106383);
Этот запрос возвращает общее количество активов на один идентификатор.
select id, sum(asset) as total_assets
from bank2001
group by id
order by total_assets desc
id total_assets
2 1292896
1 1020099
3 317085
Я пытаюсь отобразить идентификатор банка со вторым по величине активом.
Понятно, что правильный ответ - 1. Вы пытаетесь вернуть идентификатор для второй строки. Один из способов - сообщить PostgreSQL, что вы хотите получить обратно одну строку и хотите пропустить первую строку, чтобы получить ее.
with total_assets as (
select id, sum(asset) as total_assets
from bank2001
group by id
)
select id
from total_assets
order by total_assets desc
limit 1 offset 1;