Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PostgreSQL:加权排序,按列排序A*0.7+列B*0.3?_Sql_Postgresql - Fatal编程技术网

PostgreSQL:加权排序,按列排序A*0.7+列B*0.3?

PostgreSQL:加权排序,按列排序A*0.7+列B*0.3?,sql,postgresql,Sql,Postgresql,给定两个选定的数值。我可以订一个。然而,我希望根据加权公式对两者进行排序。可能吗 例如: order by columnA * 0.7 + columnB * 0.3 执行此类查询的正确/最简单方法是什么 您可以轻松完成,而且您的语法已经正确 就这么说吧,就像 select * from someTable order by columnA * 0.7 + columnB * 0.3 我倾向于这样做: SELECT columnA, columnB, (columnA * 0.7

给定两个选定的数值。我可以订一个。然而,我希望根据加权公式对两者进行排序。可能吗

例如:

order by columnA * 0.7 + columnB * 0.3

执行此类查询的正确/最简单方法是什么

您可以轻松完成,而且您的语法已经正确

就这么说吧,就像

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

我倾向于这样做:

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

首先,它更干净,更容易阅读。它还将表达式放在它所属的位置,在select中。

语法看起来正确。您得到的错误是什么?您可以在选择中使用一个额外字段对它们进行称重,然后在该别名上排序。那太好了cleaner@Trent,前提是他想要选择中的值。。。如果他想按此值排序,但不一定要将其显示为字段,那么他所采用的方法就是perfect@Hambone,以我的经验-任何试图按顺序计算的人通常都是从头开始编写查询,只是没有考虑在SELECT中表达查询。将返回添加到SELECT的另一个优点是,如果顺序不正确,可以调试结果集。