2015-12-24 2 views
0

Учитывая два выбранных числовых значения. Я могу заказать на одном. Тем не менее, я хочу заказать как на основе взвешенной формулы. Это возможно?PostgreSQL: Взвешенный порядок, порядок по столбцуA * 0.7 + columnB * 0.3?

Например:

order by columnA * 0.7 + columnB * 0.3 

Что такое правильный/простой способ для выполнения таких запросов?

+4

Синтаксис выглядит правильно. Какая у вас ошибка? –

+0

Вы всегда можете взвесить их в своем SELECT с дополнительным полем, а затем заказать этот псевдоним. Было бы намного чище – Trent

+0

@Trent, что предполагает, что он хочет значение в select ... если он хочет заказать его по этому значению, но необязательно показывать его как поле, то, как он это сделал, было бы идеально – Hambone

ответ

1

я был бы склонен делать это:

SELECT 
    columnA, 
    columnB, 
    (columnA * 0.7) + (columnB * 0.3) as weighted_value 
FROM 
    table 
ORDER BY 
    weighted_value DESC 

Во-первых, это гораздо чище и легче читать. Он также помещает выражение, где оно принадлежит, в select.

1

Вы можете сделать это легко, и ваш синтаксис уже правильный.

Просто поместите его так, как

select * 
from someTable 
order by columnA * 0.7 + columnB * 0.3