2012-06-20 3 views
1

Мне нужно запросить статистику о повторяющихся значениях в моей таблице базы данных. Например, скажем, что у меня есть поле электронной почты, и несколько строк могут иметь одинаковое электронное письмо. Я знаю, что хочу знать, Сколько адресов повторяется Сколько раз. Другими словами: «908 писем повторяются 10 раз, 1783 письма повторяются 9 раз» и так далее.Поиск статистики о повторяющихся письмах в MySQL

Repeated       # of Emails 
10            908 
9    1783 

Мне не нужно видеть фактические адреса электронной почты, только эти статистические данные.

Право знаю, у меня этот запрос, который также извлекает адрес электронной почты:

select email_address, 
count(email_address) as NumberOccurrences 
from table_user_info 
group by email_address 
having (count(email_address) > 1) 

Как я группа этих результатов?

ответ

2

Совокупность COUNT() с подзапросом, также возвращающим агрегат COUNT(), предоставит это. Группы подзапросов и подсчеты на адрес электронной почты, как и в [email protected] - 10, а внешний запрос затем подсчитывает и группирует по количеству повторов, возвращаемых подзапросом, отбрасывая фактические адреса электронной почты.

SELECT 
    repeated, 
    COUNT(*) AS numemails 
FROM (
    SELECT 
    email, 
    COUNT(*) 
    FROM emails 
    GROUP BY email 
) emailcounts 
0
select email_address, 
     count(email_address) as NumberOccurrences 
from table_user_info 
group by email_address 
having count(*) > 1 
Смежные вопросы