0
當我選擇花費最多的前10位客戶時,我需要一個顯示1到10的臨時列。Oracle 11g中的行號編號
這裏是我的查詢:
SELECT *
FROM (
SELECT row_number() OVER (ORDER BY c.cust_name) "No.", c.cust_name "Customer Name", SUM(r.payment_amount) "Total Spent"
FROM customer c, reservation r
WHERE c.cust_id = r.cust_id
GROUP BY c.cust_name
ORDER BY 3 DESC
)
WHERE ROWNUM <= 10;
但查詢會給我的輸出是這樣的:
No. Customer Name Total Spent
---------- ------------------------------ -----------
112 Romola Bice 7095
15 Beck Boxhill 6600
123 Taite Tradewell 6600
108 Port Risdall 6600
105 Paxon Rendell 6600
33 Daphne Stilwell 6600
57 Gretel Davidsen 6200
95 Mylo Bengoechea 6200
78 Kare Goodayle 6200
65 Hilton McCluney 6200
這就是我想要的:
No. Customer Name Total Spent
---------- ------------------------------ -----------
1 Romola Bice 7095
2 Beck Boxhill 6600
3 Taite Tradewell 6600
4 Port Risdall 6600
5 Paxon Rendell 6600
6 Daphne Stilwell 6600
7 Gretel Davidsen 6200
8 Mylo Bengoechea 6200
9 Kare Goodayle 6200
10 Hilton McCluney 6200
我當更換row_number() OVER (ORDER BY c.cust_name)
到rownum
,給我錯誤:ORA-00979: not a GROUP BY expression
。
有什麼方法可以實現我想要的輸出嗎?
任何幫助表示讚賞。
谷歌爲 「前N位查詢」。這是你正在尋找的。 在這種情況下,您不需要row_numbe函數。 –