2015-04-12 47 views
1

我有一个Postgres数据库中有6到7列的表。如何通过两列desc postgre的结果得到表中每一行的两列的乘积和顺序?

对于表中的每一行以及按结果(降序)排序,我必须得到两列的乘积,即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 

但这种失败,出现错误:

ERROR: column "table.col3"must appear in the GROUP BY clause or be used in an aggregate function

我想获得的所有列的值,每一行和两列的产品订单的行降序。

我希望我很清楚。

回答

0

你要错误的地方是试图使用像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

+0

谢谢,工作:) – virendrao

相关问题