ИТ Блог. Администрирование серверов на основе Linux (Ubuntu, Debian, CentOS, openSUSE)

Как подсчитать уникальные домены из поля адреса электронной почты в MySQL

Как установить MySQL на Ubuntu 16.04

Вы хотите подсчитать количество доменных имен из поля вашего адреса электронной почты в mysql. Если вы работаете на PHP, вы могли бы легко это сделать, используя функцию explode  и подсчитать доменов, но такой способ – очень плохая логика и требует максимального времени на выполнение, когда у вас много данных. Но в MySQL это легко сделать, используя SUBSTRING_INDEX().

SUBSTRING_INDEX() принимает строку с тремя аргументами, разделитель и число. Строка – это источник строки, разделитель для поиска в строке, а параметр числа будет искать разделитель. Если передать отрицательное значение в третьем аргументе, тогда он будет все слева целевого разделителя возвращается функцией SUBSTRING_INDEX().

Мы собираемся привести пример того, как получить уникальный домен из электронных писем.

Таблица электронных писем

+--------+--------------------------+

|  id    |   email                  |

+--------+--------------------------+

|  1     |   [email protected]      |

|  2     |   [email protected]      |

|  3     |   [email protected]      |

|  4     |   [email protected]      |

|  5     |   [email protected]      |

|  6     |   [email protected]      |

+--------+--------------------------+

 

Запрос mysql:

SELECT

SUBSTRING_INDEX(email, '@', -1) as domain_name, count(*) as total_emails

FROM emails

GROUP BY domain_name

ORDER BY total_emails DESC

 

Вывод:

+-----------------+----------------+

| domain_name     | total_emails   |

+-----------------+----------------+

| gmail.com       |    3           |

| yandex.ru       |    3           |

+-----------------+----------------+
Exit mobile version