Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Вывод максимальной группы / 14 сообщений из 14, страница 1 из 1
25.05.2018, 22:18
    #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
25.05.2018, 22:42
    #39650167
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывод максимальной группы
PROkaZZZniKесли 2 и более имен встречаются равное количество раз.А какой результат должен быть в таком случае?
...
Рейтинг: 0 / 0
25.05.2018, 22:51
    #39650169
PROkaZZZniK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывод максимальной группы
miksoftА какой результат должен быть в таком случае?
соответственно все имена
...
Рейтинг: 0 / 0
25.05.2018, 22:57
    #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
25.05.2018, 23:04
    #39650179
PROkaZZZniK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывод максимальной группы
ничего не выводит, ошибок тоже нет.
...
Рейтинг: 0 / 0
25.05.2018, 23:15
    #39650184
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывод максимальной группы
PROkaZZZniKничего не выводит, ошибок тоже нет.Подзапрос в скобках что-то выводит?
Подставьте это число вместо него, проверьте что получится.
...
Рейтинг: 0 / 0
25.05.2018, 23:22
    #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
25.05.2018, 23:37
    #39650194
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывод максимальной группы
PROkaZZZniKВ подзапрос надо было добавить group by.Да, точно, пропустил.
...
Рейтинг: 0 / 0
25.05.2018, 23:41
    #39650196
PROkaZZZniK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывод максимальной группы
miksoftДа, точно, пропустил.

Все равно немного не понятно по выводу количества групп(сгруппированных строк). Можно небольшой пример?
Вот те же самые name.
Группирую их group by name, получается список строк из индивидуальных имен. Как это все обернуть в count()?
Подсчет количества встречающихся имен.
Спасибо.
...
Рейтинг: 0 / 0
25.05.2018, 23:57
    #39650199
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывод максимальной группы
PROkaZZZniKПодсчет количества встречающихся имен.
Код: sql
1.
SELECT count(DISTINCT name) FROM table
...
Рейтинг: 0 / 0
30.05.2018, 15:16
    #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
30.05.2018, 15:37
    #39652619
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывод максимальной группы
TITnetработать будетУгу... только неправильно. Добавь одну запись с именем Aaron...
...
Рейтинг: 0 / 0
30.05.2018, 15:43
    #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
30.05.2018, 15:53
    #39652633
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывод максимальной группы
Но всё же ответ выше куда как получше будет...
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Вывод максимальной группы / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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