2015-04-12 51 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

相關問題