comments | difficulty | edit_url | tags | |
---|---|---|---|---|
true |
简单 |
|
表:Emails
+-------------+---------+ | Column Name | Type | +-------------+---------+ | id | int | | email | varchar | +-------------+---------+ id 是这张表的主键(有不同值的列)。 这张表的每一行包含一个电子邮件地址。电子邮件地址不包含大写字母。
编写一个解决方案来找到所有 不同的电子邮件域名 并且计数与每个域名相关联的 记录。只考虑 以 .com 结尾 的域名。
返回结果表以 email_domains 升序 排列。
结果格式如下所示。
示例 1:
输入: 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 升序排列。
我们先筛选出所有以 .com
结尾的邮箱,然后使用 SUBSTRING_INDEX
函数提取出邮箱的域名,最后使用 GROUP BY
统计每个域名的个数。
# Write your MySQL query statement below
SELECT SUBSTRING_INDEX(email, '@', -1) AS email_domain, COUNT(1) AS count
FROM Emails
WHERE email LIKE '%.com'
GROUP BY 1
ORDER BY 1;
import pandas as pd
def find_unique_email_domains(emails: pd.DataFrame) -> pd.DataFrame:
emails["email_domain"] = emails["email"].str.split("@").str[-1]
emails = emails[emails["email"].str.contains(".com")]
return (
emails.groupby("email_domain")
.size()
.reset_index(name="count")
.sort_values(by="email_domain")
)