Поиск максимального значения в вычисляемом поле - MySQL

Узнай цену своей работы

Формулировка задачи:

Всем привет! Есть таблица, содержащая такие данные:
id company_id data
-----------------------------------
1  1          some data
2  1          some data
3  1          some data
4  2          some data
5  3          some data
6  3          some data
7  4          some data
и т.д.
Мне нужно узнать максимальное кол-во строк в этой таблице, относящееся к одной компании. В этом примере у компании с id 1 в этой таблице больше все строк (3), вот это число 3 и нужно получить. Реальная таблица содержит около миллиона строк. Пока мне удалось только посчитать, сколько строк принадлежит той или иной компании:
SELECT COUNT(company_id) AS cnt FROM crm_company_contact WHERE company_id < 1000 GROUP BY company_id
Но как вычислить максимальное значение в этом вычисленном поле? Спасибо!

Решение задачи: «Поиск максимального значения в вычисляемом поле»

textual
Листинг программы
SELECT MAX(cnt) AS max_cnt FROM (
    SELECT COUNT(company_id) AS cnt
    FROM crm_company_contact
    GROUP BY company_id
) AS counts;

Объяснение кода листинга программы

В этом коде:

  1. SELECT MAX(cnt) AS max_cnt - выбирается максимальное значение из вычисляемого поля cnt
  2. FROM (SELECT COUNT(company_id) AS cnt FROM crm_company_contact GROUP BY company_id) - это подзапрос, который сначала группирует записи по company_id, а затем считает количество контактов для каждой компании
  3. AS counts - это псевдоним для результата подзапроса, чтобы его можно было использовать в основном запросе
  4. SELECT MAX(cnt) AS max_cnt FROM counts - выбирается максимальное значение из поля cnt из результата подзапроса (который хранится в переменной counts) В итоге, этот запрос вернет одну строку с максимальным количеством контактов для каждой компании.

Оцени полезность:

12   голосов , оценка 3.917 из 5
Похожие ответы