powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Вывод максимальной группы
14 сообщений из 14, страница 1 из 1
Вывод максимальной группы
    #39650162
PROkaZZZniK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго времени суток. Давно не практиковался в sql... ступор.
Есть таблица с именами, нужно вывести самое часто упоминающиеся имена.
Код: sql
1.
2.
3.
4.
SELECT name FROM table
group by name 
order by  count(name) desc
limit 1;


сейчас вот так, но так не будет работать, если 2 и более имен встречаются равное количество раз.

Хочется написать как-то так, но так неверно.
Код: sql
1.
2.
3.
SELECT name FROM table
group by name 
having  max(count(name));



Буду рад любой подсказке.
Спасибо.
...
Рейтинг: 0 / 0
Вывод максимальной группы
    #39650167
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PROkaZZZniKесли 2 и более имен встречаются равное количество раз.А какой результат должен быть в таком случае?
...
Рейтинг: 0 / 0
Вывод максимальной группы
    #39650169
PROkaZZZniK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftА какой результат должен быть в таком случае?
соответственно все имена
...
Рейтинг: 0 / 0
Вывод максимальной группы
    #39650174
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
SELECT name FROM table
group by name 
having  count(*) = (SELECT count(*) FROM table ORDER BY count(*) DESC LIMIT 1)
...
Рейтинг: 0 / 0
Вывод максимальной группы
    #39650179
PROkaZZZniK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ничего не выводит, ошибок тоже нет.
...
Рейтинг: 0 / 0
Вывод максимальной группы
    #39650184
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PROkaZZZniKничего не выводит, ошибок тоже нет.Подзапрос в скобках что-то выводит?
Подставьте это число вместо него, проверьте что получится.
...
Рейтинг: 0 / 0
Вывод максимальной группы
    #39650190
PROkaZZZniK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В подзапрос надо было добавить group by.
Теперь вроде бы все сработало
Код: sql
1.
2.
3.
SELECT name FROM table
group by name 
having  count(*) = (SELECT count(*) FROM table group by name ORDER BY count(*) DESC LIMIT 1)
...
Рейтинг: 0 / 0
Вывод максимальной группы
    #39650194
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PROkaZZZniKВ подзапрос надо было добавить group by.Да, точно, пропустил.
...
Рейтинг: 0 / 0
Вывод максимальной группы
    #39650196
PROkaZZZniK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftДа, точно, пропустил.

Все равно немного не понятно по выводу количества групп(сгруппированных строк). Можно небольшой пример?
Вот те же самые name.
Группирую их group by name, получается список строк из индивидуальных имен. Как это все обернуть в count()?
Подсчет количества встречающихся имен.
Спасибо.
...
Рейтинг: 0 / 0
Вывод максимальной группы
    #39650199
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PROkaZZZniKПодсчет количества встречающихся имен.
Код: sql
1.
SELECT count(DISTINCT name) FROM table
...
Рейтинг: 0 / 0
Вывод максимальной группы
    #39652591
TITnet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сразу хочу сказать, что запрос явно не для production, но работать будет ( но это неточно ).

Имеем таблицу user с именами пользователей.

Код: sql
1.
2.
SELECT *
FROM user;



namealexalexbobbobzena

Нужен запрос, который вернёт два имени (alex и bob), т. к. оба имени встречаются одинаковое количество раз (большее, чем остальные).

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
SELECT sub_query.name
FROM (
       SELECT
         user.name,
         count(user.name) AS name_count
       FROM user
       GROUP BY user.name) AS sub_query
WHERE sub_query.name_count = (
  SELECT count(user.name) AS name_count
  FROM user
  GROUP BY user.name
  LIMIT 1);



namealexbob

Пример на SQL Fiddle .
...
Рейтинг: 0 / 0
Вывод максимальной группы
    #39652619
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TITnetработать будетУгу... только неправильно. Добавь одну запись с именем Aaron...
...
Рейтинг: 0 / 0
Вывод максимальной группы
    #39652625
TITnet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina, согласен, пропустил сортировку.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
SELECT sub_query.name
FROM (
       SELECT
         user.name,
         count(user.name) AS name_count
       FROM user
       GROUP BY user.name) AS sub_query
WHERE sub_query.name_count = (
  SELECT count(user.name) AS name_count
  FROM user
  GROUP BY user.name

  -- UPDATE
  ORDER BY name_count DESC
  -- UPDATE

  LIMIT 1);
...
Рейтинг: 0 / 0
Вывод максимальной группы
    #39652633
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Но всё же ответ выше куда как получше будет...
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Вывод максимальной группы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]