Ben SQL sorgusu vardır:
select title, scale / next_scale, c
from ( select title, scale, scale*D0 AS c,
lead(scale) over(partition by title order by scale asc) as next_scale,
row_number() over(partition by title order by scale asc) as agg_row
from signatures
) agg
where agg_row = 1;
beklendiği gibi ve çalışır. Ancak, gerçekten sıralama "ölçek" değeri birkaç sütun arasında bir aritmetik işlem olmasını istediklerini, bu yüzden (yukarıda gösterilen) bir AS yan tümcesini kullanarak ve sorguyu değiştirmek çalıştı:
select title, scale / next_scale, c
from ( select title, scale, scale*D0 AS c,
lead(scale) over(partition by title order by c asc) as next_scale,
row_number() over(partition by title order by c asc) as agg_row
from signatures
) agg
where agg_row = 1;
Bununla birlikte, ORDER BY c
başarısız olur. Neden bu? I ORDER BY scale*D0
yerine ve gayet güzel çalışıyor. Ancak, sonunda böyle bir terim kullanmak isteyeceksiniz: {[(2)];} ve ben hesaplamak zorunda istemiyorum 3 farklı zamanlarda - sorgunun fiziksel uzunluğunu söz değil. I scale*D0*D1*D2*...*D100 AS c
olması umuduyla ve ardından ORDER BY c
. Am
Bu mümkün mü?
Ben PostgreSQL kullanıyorum.
Many thanks, Brett