2011-05-18 34 views
1

我運行一個查詢 select * from transactions這給了我記錄集爲了通過字段值和排序的出現次數記錄如何通過它

ppno ---------name---------------amnt 
1309 ---------Rajasekar----------12000 
1210 ---------Mani  ----------21000 
1309 ---------Sank  ----------90012 
1100 ---------still ----------12232 
1309 ---------Jack  ----------23344 

我想組中的結果通過的出現次數相同的ppno並根據出現次數對其進行排序。例如,我想要這樣的東西。

ppno ---------name---------------amnt 
1309 ---------Rajasekar----------12000 
1309 ---------Sank  ----------90012 
1309 ---------Jack  ----------23344 
1210 ---------Mani  ----------21000  
1100 ---------still ----------12232 

回答

1
select t.* 
from transactions t 
order by (
    select count(1) from transactions t2 where t2.ppno = t.ppno 
) desc, t.ppno desc 
1
SELECT t.ppno, t.name, t.amnt 
    FROM (SELECT ppno, COUNT(*) AS ppnoCount 
       FROM transactions 
       GROUP BY ppno) c 
     INNER JOIN transactions t 
      ON c.ppno = t.ppno 
    ORDER BY c.ppnoCount DESC, t.ppno