如何通过两列desc postgre的结果获得表中每行的两列产品和顺序?

时间:2015-04-12 06:38:43

标签: sql postgresql

我在Postgres数据库中有一个包含6到7列的表。

对于表格中的每一行,我必须获得两列col1col2的乘积,并按结果排序(降序)。

我尝试过以下事情,但没有得到我期望的结果......

首先:

SELECT SUM(col1 * col2) AS res
FROM   movies_b order by res desc;

但是这为所有行提供了一个值。

第二

SELECT col3, col4, col5, col6, SUM(col1 * col2) AS res 
FROM table 
ORDER BY res DESC

但这失败了,错误:

  

错误:列“table.col3”必须出现在GROUP BY子句中或者是   用于聚合函数

我想获取每一行的所有列的值,并按两列的乘积降序排序。

我希望我很清楚。

1 个答案:

答案 0 :(得分:1)

你出错的地方是尝试使用像SUM这样的聚合函数。如果您使用SUM,它会将每行的结果相加并返回该单个数字(您发现的数字)。

您想要的并不涉及实际聚合来自多行的任何数据。您要做的只是按col1*col2的结果订购。

以下是一个示例查询:

SELECT col1, col2, col3, col4, (col1*col2) AS product
FROM movies_b
ORDER BY (col1*col2) DESC

如果需要,您甚至可以删除SELECT行的最后一部分,只需确保将(col1*col2)保留在ORDER BY部分。

SQL小提琴是up here