如何通过两列desc postgre的结果得到表中每一行的两列的乘积和顺序?
问题描述:
我有一个Postgres数据库中有6到7列的表。如何通过两列desc postgre的结果得到表中每一行的两列的乘积和顺序?
对于表中的每一行以及按结果(降序)排序,我必须得到两列的乘积,即col1
和col2
。
我曾尝试下面的东西,但还没有得到我期望的结果...
第一:
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
我想获得的所有列的值,每一行和两列的产品订单的行降序。
我希望我很清楚。
答
你要错误的地方是试图使用像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。
谢谢,工作:) – virendrao