我想在沿着这些行定义的数据库中选择用于排序目的的最大值
cars_sold INTEGER,
tires_sold INTEGER,
batteries_sold INTEGER,
我想基于类似的东西排序并返回顶部的total_sold,
total_sold = (cars_sold * 100) + (tires_sold * 10) + (batteries_sold * 2)
是否存在类似这样的聚合函数,还是需要编写自己的函数? 此外,这样的功能的成本是否可笑? 谢谢,
答案 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;