最近在做一個資料庫,但是發現了一個問題
想請各位大大看看應該怎麼解決
我有一些資料長得像這樣
想利用account去分組進行cash的加總,並且根據出來的sumcash進行排名
但卻遇到一些問題
下面這段是我得程式碼寫法
select @rownum := @rownum + 1 AS 'rownum',account,sum(cash) as sumcash
from Tablea,(SELECT @rownum := 0) b
group by account order by sumcash desc;
我的rownum不是根據sumcash去排名而是根據account去排名
想請問應該如何修正此問題
select @rownum := @rownum + 1 as rownum, account, sumcash
from (
select account, sum(cash) sumcash
from Tablea
group by account
order by sum(cash) desc
) t1, (select @rownum := 0) t2
要先做好group後,才去使用order。
你這樣的寫法會變成先order再做group。
語法的順序不重要,因為group如果寫在同一段的話。都會最後運行的。
所以你需要用子查尋的處理方式
如
SELECT * FROM (
select @rownum := @rownum + 1 AS 'rownum',account,sum(cash) as sumcash
from Tablea,(SELECT @rownum := 0) b
group by account
) AS sumdata
order by sumcash desc;