2014-04-04 77 views
0

我想選擇在沿着這些路線定義的數據庫排序目的的最大值,PostgreSQL的自定義排序功能

cars_sold INTEGER, 
tires_sold INTEGER, 
batteries_sold INTEGER, 

,我想基於這樣的事情進行排序,並返回前total_sold,

total_sold = (cars_sold * 100) + (tires_sold * 10) + (batteries_sold * 2) 

是否有這樣的東西的集合函數,或者我是否需要寫我自己的函數? 另外,這樣的功能的成本會是荒謬的嗎? 謝謝,

+1

所有缺少基本信息。 Postgres版本,表格定義,樣本數據,所需結果的正確描述。你有什麼嘗試?請改善你的問題。 –

回答

0

歐文是正確的,你應該始終包括你的PostgreSQL版本,你可以儘可能多的架構信息,但是......至少在PostgreSQL上9.3,下面的工作:

create temp table foo(cars_sold int, tires_sold int, batteries_sold int); 
insert into foo values (1, 2, 3); 
insert into foo values (2, 3, 4); 
insert into foo values (10, 3, 4); 
insert into foo values (0, 6, 7); 

select *, (cars_sold * 100) + (tires_sold * 10) + (batteries_sold * 2) as total_sold 
from foo 
order by total_sold;