Подсчитайте, сколько раз значение появляется в определенном столбце в MySQL

Вероятно, этот вопрос уже задавали раньше, но я не могу разобраться в бесчисленном множестве результатов поиска.

Учитывая ненормализованную таблицу MySQL, какой запрос является наиболее оптимизированным для подсчета количества использований каждого отдельного значения столбца x?

например Дана таблица, содержащая

mike
mary
mike

Возврат результатов, таких как:

mike 2
mary 1

Из документации MySQL может показаться, что count — это агрегатная функция, которую можно использовать с GROUP BY, но она не делает то, что я хочу (она возвращает общее количество строк в GROUP BY, а не количество появлений для каждой строки. т.е. это не работает SELECT count(email) as c FROM orders GROUP BY email


person Mahmoud Al-Qudsi    schedule 17.04.2012    source источник
comment
i.e. this does not work --- поясните подробнее, пожалуйста. Не работает вообще не помогает   -  person zerkms    schedule 18.04.2012
comment
Спасибо. Не знаю, что на меня нашло, когда я спросил об этом.   -  person Mahmoud Al-Qudsi    schedule 06.05.2012


Ответы (3)


Взгляните на Группу по функциям.

То, что делает группировка по функциям, в значительной степени группирует похожие значения для данного поля. Затем вы можете показать количество раз, когда это значение было сгруппировано, используя функцию COUNT.

Документация по MySQL

Вы также можете использовать группировку по функциям с большим количеством других функций, определенных MySQL (см. ссылку выше).

mysql> SELECT student_name, AVG(test_score)
    ->        FROM student
    ->        GROUP BY student_name;
person Erwald    schedule 17.04.2012

select name, count(*) from table group by name;

думаю стоит сделать

person davethecoder    schedule 17.04.2012

person    schedule
comment
Видимо, я неправильно понял результаты. Включение электронной почты туда сделало более ясным, какие данные я видел. На самом деле не было ничего плохого в запросе, который у меня есть в моем посте. Спасибо. - person Mahmoud Al-Qudsi; 18.04.2012
comment
заказ - хорошая идея, поэтому мой вклад: выберите адрес электронной почты, подсчитайте (*) как c ОТ заказов СГРУППИРОВАТЬ ПО электронной почте ЗАКАЗАТЬ ПО c DESC; - person ademar111190; 16.01.2014