Как упорядочить набор записей по количеству вхождений значения поля и отсортировать по нему - PullRequest
1 голос
/ 18 мая 2011

Я выполняю запрос 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

Ответы [ 2 ]

1 голос
/ 18 мая 2011
select t.*
from transactions t
order by (
    select count(1) from transactions t2 where t2.ppno = t.ppno
) desc, t.ppno desc
1 голос
/ 18 мая 2011
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
...