Вы хотите подсчитать количество доменных имен из поля вашего адреса электронной почты в 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 | +-----------------+----------------+