Postgresql自定义排序功能

时间:2014-04-04 02:32:23

标签: postgresql

我想在沿着这些行定义的数据库中选择用于排序目的的最大值

cars_sold INTEGER,
tires_sold INTEGER,
batteries_sold INTEGER,

我想基于类似的东西排序并返回顶部的total_sold,

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

是否存在类似这样的聚合函数,还是需要编写自己的函数? 此外,这样的功能的成本是否可笑? 谢谢,

1 个答案:

答案 0 :(得分:0)

Erwin是对的,你应该总是包含你的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;