Нахождение элемента с макс. нет появления в SQL - PullRequest
3 голосов
/ 15 января 2012

У меня есть следующая таблица:

id | год

10 | 2000

11 | 2001

10 | 2002

12 | 2003

11 | 2004

13 | 2005

10 | 2006

10 | 2007

Согласно id, поскольку 10 появляется больше всего, выбор должен дать 10 для этой таблицы. Я знаю, что это легко, но я не мог пойти дальше, чем COUNT (*).

Ответы [ 2 ]

2 голосов
/ 15 января 2012

Следующий SQL будет работать при наличии более одного идентификатора с максимальным числом:

SELECT id FROM table GROUP BY 1 
HAVING COUNT(*)=( SELECT MAX(t.count) 
                    FROM ( SELECT id,COUNT(*) AS count
                             FROM table GROUP BY 1 ) t )

Первый (самый внутренний) SELECT будет просто считать каждый идентификатор, он используется во втором SELECT, чтобы определить максимальное количество, и он будет использоваться в последнем (самом внешнем) SELECT, чтобы отображать только право идентификаторы.

Надеюсь, это поможет.

2 голосов
/ 15 января 2012

Вам нужна группа по, упорядочить по - вместе с лимитом:

SELECT id FROM sometable GROUP BY id ORDER BY COUNT(*) DESC LIMIT 1

Это сгруппирует таблицу по идентификатору, упорядочит их в порядке убывания по их количеству и выберет первую строку (ту, которая имеет наибольшее количество).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...