Kак найти самое повторяющееся число в таблице sql?

Есть столбец таблицы с целыми числами, нужно найти число, которое больше всего повторяется с помощью запроса sql. Мне кажется, что должна быть какая-то функция, которая это считает, однако я ее не нашел, или сделать это через COUNT() но оно не работает.


Ответы (2 шт):

Автор решения: user411714
select EmployeeId, COUNT(*) as 'Number of orders' from Tasks
group by EmployeeId
having count(*) = (select max(EmployeeId) from Tasks)

EmpoyeeId - той самий стовпець з інтовими значеннями

→ Ссылка
Автор решения: alezhu

Допустим и нас такая таблица:

CREATE TABLE test (
  id INT NOT NULL AUTO_INCREMENT,
  value INT,
  PRIMARY KEY (id)
);
INSERT INTO test (value) VALUES 
(10),
(20),(20),
(30),(30),(30),
(40);

Вначале нам нужно посчитать число повторений для каждого числа. Для это мы используем COUNT(*) и группируем по числу.

select 
  value,
  count(*)  as count
  from test
  group by value;

Получаем:

value count
10 1
20 2
30 3
40 1

Добавляем сортировку по убыванию count:

select 
 value,
 count(*)  as count
 from test
 group by value
 order by count desc;

Получаем:

value count
30 3
20 2
40 1
10 1

И берем только 1 строку - добавляем LIMIT:

select 
 value,
 count(*)  as count
 from test
 group by value
 order by count desc
 limit 1;

Получаем:

value count
30 3

Если же нужно получить только число без количества его повторений - оборачиваем еще в один select:

select value from (
select 
 value,
 count(*)  as count
 from test
 group by value
 order by count desc
 limit 1
) as data;

View on DB Fiddle

→ Ссылка