Поиск максимального значения в вычисляемом поле - MySQL
Формулировка задачи:
Всем привет! Есть таблица, содержащая такие данные:
Мне нужно узнать максимальное кол-во строк в этой таблице, относящееся к одной компании. В этом примере у компании с id 1 в этой таблице больше все строк (3), вот это число 3 и нужно получить. Реальная таблица содержит около миллиона строк.
Пока мне удалось только посчитать, сколько строк принадлежит той или иной компании:
Но как вычислить максимальное значение в этом вычисленном поле?
Спасибо!
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 и т.д.
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;
Объяснение кода листинга программы
В этом коде:
SELECT MAX(cnt) AS max_cnt
- выбирается максимальное значение из вычисляемого поляcnt
FROM (SELECT COUNT(company_id) AS cnt FROM crm_company_contact GROUP BY company_id)
- это подзапрос, который сначала группирует записи поcompany_id
, а затем считает количество контактов для каждой компанииAS counts
- это псевдоним для результата подзапроса, чтобы его можно было использовать в основном запросеSELECT MAX(cnt) AS max_cnt FROM counts
- выбирается максимальное значение из поляcnt
из результата подзапроса (который хранится в переменнойcounts
) В итоге, этот запрос вернет одну строку с максимальным количеством контактов для каждой компании.