3059.找到所有不同的邮件域名
-
目标
编写一个解决方案来找到所有 不同的电子邮件域名 并且计数与每个域名相关联的 记录。只考虑 以 .com 结尾 的域名。
返回结果表以 email_domains 升序 排列。
2.输入:
-
Emails 表: +-----+-----------------------+ | id | email | +-----+-----------------------+ | 336 | [email protected] | | 489 | [email protected] | | 449 | [email protected] | | 95 | [email protected] | | 320 | [email protected] | | 411 | [email protected] | +----+------------------------+ 输出: +--------------+-------+ | email_domain | count | +--------------+-------+ | outlook.com | 2 | | yahoo.com | 1 | +--------------+-------+ 解释: - 以“.com”结束的合法域名只有“outlook.com”和“yahoo.com”,数量分别为 2 和 1。 输出表以 email_domains 升序排列。 实现
use jige;
Create table If Not Exists Emails (id int, email varchar(255));
Truncate table Emails;
insert into Emails (id, email) values ('336', '[email protected]');
insert into Emails (id, email) values ('489', '[email protected]');
insert into Emails (id, email) values ('449', '[email protected]');
insert into Emails (id, email) values ('95', '[email protected]');
insert into Emails (id, email) values ('320', '[email protected]');
insert into Emails (id, email) values ('411', '[email protected]');
SELECT
SUBSTRING_INDEX(email, '@', -1) as email_domain,
COUNT(id) AS count
FROM Emails
WHERE email LIKE '%.com'
GROUP BY email_domain
ORDER BY email_domain ASC;
小结
SELECT SUBSTRING_INDEX(email, '@', -1) as email_domain:这部分代码使用SUBSTRING_INDEX函数来提取电子邮件地址中的域名部分。SUBSTRING_INDEX函数接受三个参数:字符串、分隔符和数字。这里的分隔符是'@',数字是-1,意味着从字符串的末尾开始提取,即提取'@'后面的部分,也就是电子邮件的域名。
COUNT(id) AS count:这部分代码计算每个域名对应的电子邮件数量,并将其命名为count。
FROM Emails:指定了查询的数据来源,即Emails表。
WHERE email LIKE '%.com':这个条件过滤出电子邮件地址中包含.com的记录。%是一个通配符,表示任意数量的字符。
GROUP BY email_domain:根据上一步提取的域名对结果进行分组,这样每个域名的电子邮件数量就会被聚合在一起。
ORDER BY email_domain ASC:将结果按照域名进行升序排序。
总的来说,这个查询的目的是列出Emails表中所有以.com结尾的电子邮件地址的域名,以及每个域名对应的电子邮件数量,并且按照域名进行排序。
标签:domain,email,力扣,域名,3059,id,com,Emails From: https://blog.csdn.net/pxyxyxy/article/details/143651517