Как задать максимальный и минимальный размеры группы, чтобы получить записи, где count < 5 и count > 2?
На данный момент использую такой запрос:
SELECT id, info, COUNT(*) as count
FROM notification
GROUP BY info ORDER BY count DESC;
Пример:
+----+-------+
| id | info |
+----+-------+
| 1 | Admin |
| 2 | User |
| 3 | User |
| 4 | User |
| 5 | User |
| 6 | User |
| 7 | Admin |
| 8 | Admin |
| 9 | Test |
| 10 | Test |
+----+-------+
Желаемый вывод:
+----+-------+--------+
| id | info | count |
+----+-------+--------+
| 1 | Admin | 3 |
+----+-------+--------+
Используйте параметр HAVING:
SELECT id, info, COUNT(*) as count
FROM notification
GROUP BY info
HAVING count(*) > 2
and count(*) < 5
ORDER BY count DESC;
Пример на sqlfiddle.
Если таблица большая, то правильнее будет обернуть в другой запрос и написать условие в where. Работать будет быстрее.
SELECT * FROM (
SELECT id, info, COUNT(*) as count
FROM notification
GROUP BY info
) a
WHERE a.count > 2 AND a.count < 5
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники