email - servidor - MySQL Query para contar dominios exclusivos desde el campo Dirección de correo electrónico
usar gmail como servidor de correo (7)
Me gustaría tener una mejor idea de qué dominios están usando mis clientes. Podría hacer esto fácilmente en PHP explode
cada dirección y contando el dominio de esa manera. Pero me pregunto si hay una forma de obtener esta información con solo una simple consulta de MySQL.
Este es el resultado de la muestra:
gmail.com | 3942
yahoo.com | 3852
hotmail.com | 209
... y así sucesivamente, donde la primera columna es el dominio de direcciones de correo electrónico, y la segunda columna es el número de direcciones en ese dominio.
¿Qué tal algo así como
SELECT COUNT(DISTINCT [what you want])
FROM MyTable
Agregar ORDER BY a la respuesta de WoLpH hace que la salida sea más clara:
SELECT substring_index(email, ''@'', -1), COUNT(*) AS MyCount
FROM `database`.`table`
GROUP BY substring_index(email, ''@'', -1)
ORDER BY MyCount DESC;
Deberías hacer algo como esto:
SELECT substring_index(email, ''@'', -1) domain, COUNT(*) email_count
FROM table
GROUP BY substring_index(email, ''@'', -1)
-- If you want to sort as well:
ORDER BY email_count DESC, domain;
Pequeño ajuste al original de Wolph arriba para acortar un poco y agregar un buen nombre de columna y limitar los resultados en la lista de casos es larga. Ajuste el límite a su gusto
select substring_index(email, ''@'', -1) AS domain, count(*) from TABLE group by domain order by count(*) DESC limit 40;
Puede usar esta consulta para obtener el recuento único de dominio de la tabla.
SELECT substr(email,INSTR(email,"@")+1),count(substr(email,INSTR(email,"@"))) from YOUR_TABLE group by substr(email,INSTR(email,"@"));
SELECT
substring_index(email_address, ''@'', -1) AS Domain
,COUNT(*) AS MyCount
FROM
database_name.table_name
GROUP BY
substring_index(email_address, ''@'', -1)
ORDER BY
MyCount DESC
select distinct SUBSTRING(Email, CHARINDEX(''@'', Email) + 1,LEN(Email) - CHARINDEX (''@'', Email)), Count(*) from Tbl_name
Group by SUBSTRING(Email, CHARINDEX(''@'', Email) + 1,LEN(Email) - CHARINDEX (''@'', Email))
order by Count(*) desc