MySQL: ВЫБОР рядов, упорядоченных по частоте значения

0

Предполагается следующая таблица:

People
---------------------------
id | First Name | Last Name

Как я могу выбрать строки ORDERed BY наиболее часто встречающихся первых имен?

  • 0
    Вам нужны только имена или все записи, показывающие записи с наиболее часто встречающимися именами в первую очередь?
Теги:

3 ответа

2
Лучший ответ
select 
  count(firstname) as countFn, 
  firstname 
from people 
group by firstname 
order by countFn desc

изменить: id и lastname удалены из

  • 0
    Это не будет работать, id и фамилия не могут быть в предложении SELECT, потому что они не являются частью предложения GROUP BY.
  • 0
    @Martin: это MySQL, они допускают это нестандартное поведение. dev.mysql.com/doc/refman/5.0/en/group-by-hidden-columns.html
Показать ещё 2 комментария
1
select p.*, t.count
from people p
, (select FirstName, count(1) as count
   from people
   group by FirstName) t
where p.FirstName = t.FirstName
order by t.count desc;
0

Если вам нужно увидеть все имена, отсортированные по числу первых имен в порядке убывания, то для Oracle это будет работать:

select n.firstname, n.lastname, g.count 
from 
people n, (select firstname, count(*) count from people group by firstname) g
where n.firstname=g.firstname
order by g.count desc

Не знаю, как это работает, например. MySql.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню