#php #mysql #database #sorting #group-by
#php #mysql #База данных #сортировка #группировать по
Вопрос:
Я запускаю запрос 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
Ответ №2:
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