Как вывести максимальные значения двух столбцов для каждого значения ключа (ключ в еще одном столбце? postgresql

У меня есть таблица tab из 3х столбцов (ниже пример заполнения):

key col1 col2
1 10 200
1 20 100
1 20 0
2 30 500
2 30 400
2 30 300

Мне нужно вывести в каждом столбце (col1, col2) максимальные значения для каждого значения ключа.

То есть ожидаемый ответ на примере такой:

key col1 col2
1 20 200
2 30 500

Я пробовал так. С использованием оконной функции в select:

create tab_ext as select
*, 
max(col1) over (partition by key) as col1_max, 
max(col2) over (partition by key) as col2_max
from tab;

Затем использовать distinct

select

distinct key, col1_max as col1, col2_max as col2
from tab_ext

Посоветуйте, пожалуйста, более лаконичный способ достичь результат


Ответы (0 шт):