PostgreSQL的自定义排序功能

问题描述:

我想选择在沿着这些路线定义的数据库排序目的的最大值,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版本,表格定义,样本数据,所需结果的正确描述。你有什么尝试?请改善你的问题。 –

欧文是正确的,你应该始终包括你的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;