Если я правильно понял логи c функции argmin (), то вы могли бы реализовать ее как javascript UDF, например, так:
create or replace function argmin("a" object, "b" object)
returns object
language javascript
as
$$
for (let [k,v] of Object.entries(a))
if (v==b[k])
continue
else
return v < b[k] ? a : b
return b
$$;
И применить так:
with t as (
select
object_construct('x',1, 'y',2) a,
object_construct('x',2, 'y',1) b
)
select argmin(t.a,t.b):y from t;
На самом деле эта функция встроена:
select
object_construct('x',1, 'y',2) a,
object_construct('x',2, 'y',1) b,
iff(a<b, a, b) : y
;
Еще более кратко:
select
object_construct('x',1, 'y',2) a,
object_construct('x',2, 'y',1) b,
least(a,b):y,
greatest(a,b):y;