[力扣每日一练]关于所有不同域名的查找

一、题目要求:

表:Emails+-------------+---------+
| Column Name | Type    |
+-------------+---------+
| id          | int     |
| email       | varchar |
+-------------+---------+
id 是这张表的主键(有不同值的列)。
这张表的每一行包含一个电子邮件地址。电子邮件地址不包含大写字母。
编写一个解决方案来找到所有 不同的电子邮件域名 并且计数与每个域名相关联的 记录。只考虑 以 .com 结尾 的域名。返回结果表以 email_domains 升序 排列。结果格式如下所示。示例 1:输入: 
Emails 表:
+-----+-----------------------+
| id  | email                 |
+-----+-----------------------+
| 336 | hwkiy@test.edu        |
| 489 | adcmaf@outlook.com    |
| 449 | vrzmwyum@yahoo.com    |
| 95  | tof@test.edu          |
| 320 | jxhbagkpm@example.org |
| 411 | zxcf@outlook.com      |
+----+------------------------+
输出: 
+--------------+-------+
| email_domain | count |
+--------------+-------+
| outlook.com  | 2     |
| yahoo.com    | 1     |  
+--------------+-------+
解释: 
- 以“.com”结束的合法域名只有“outlook.com”和“yahoo.com”,数量分别为 2 和 1。
输出表以 email_domains 升序排列。

二、pandas解法:

pandas解决这个需求可以用正则表达式来表示

import pandas as pddef find_unique_email_domains(emails: pd.DataFrame) -> pd.DataFrame:#新建空值数据框data = pd.DataFrame()#取出Series类型的对应列,并且通过字符串匹配找到符合要求的字符串,保存到data空数据框的新建列中data['email_domain'] = emails['email'].str.extract(r'@([a-z]+\.com$)')#记得删除空值data=data.dropna()#新建数字1列,便于后续的统计data['count'] = 1#进行分组统计,直接将1列分组后进行累加的聚合操作即可data_last = data.groupby('email_domain').agg({'count':'sum'}).reset_index()return data_last

由于这里正则表达式要查找的是@后的域名(不包含@),所以正则表达式查找的是@后小括号里的表达式,结尾,即$符号前以\.com表示

三、MySQL的两种解法:

(1)利用SUBSTRING_INDEX函数

SUBSTRING_INDEX(string,str,n)
#表示返回string字符串从str开始的第n个字符

这里我就可以在select字段中截取到@后的字符了,在WHERE利用函数RIGHT匹配字符串“.com”,再进行分组聚合即可完成查询

# Write your MySQL query statement below
SELECT SUBSTRING_INDEX(email,"@",-1) AS email_domain,count(email) AS count
FROM Emails 
WHERE RIGHT(email,4)=".com"
GROUP BY email_domain
ORDER BY email_domain

(2)利用SUBSTRING和LOCATE的函数组合

SUBSTRING(str,start,len) #返回从字符串str从strat位置起的len个长度的字符串
LOCATE(substring,string,start_position) #表示从string字符串的start_position位置开始的,查找substring的位置

SUBSTRING函数的参数只能输入数字,这样就不能精确截取字符串了,而LOCATE函数可以将某个字符转化为其在字符串的位置数字,用LOCATE函数找出@的数字位置,然后将该数字传递给SUBSTRING函数的start参数即可完成截取

# Write your MySQL query statement below
SELECT SUBSTRING(email, LOCATE('@', email)+1) AS email_domain,COUNT(*) AS count
FROM Emails
WHERE RIGHT(email,4) = '.com'
GROUP BY email_domain
ORDER BY email_domain

注意:这里的LOCATE要+1,因为域名不包含@

补充:为了避免命名BUG,MySQL的字段执行顺序为:

  1. FROM

  2. WHERE

  3. GROUP BY

  4. HAVING

  5. SELECT

  6. ORDER BY

  7. LIMIT

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/72628.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

blender看不到导入的模型

参考:blender 快捷键 常见问题_blender材质预览快捷键-CSDN博客 方法一:视图-裁剪起点,设置一个很大的值 方法二:选中所有对象,对齐视图-视图对齐活动项-选择一个视图

HarmonyOS Next~鸿蒙系统ArkCompiler跨平台编译技术的革新实践

HarmonyOS Next~鸿蒙系统ArkCompiler跨平台编译技术的革新实践 引言 在万物互联时代,操作系统对编译技术的需求已从单纯的代码转换演变为跨设备协同、高效资源调度与极致性能优化的综合挑战。华为鸿蒙系统(HarmonyOS)自主研发的ArkCompiler…

Kanna 与 Swift:结合使用提升网络请求效率

Kanna 是一个基于 Swift 的轻量级、高性能的 XML/HTML 解析库,它能够帮助开发者快速解析和处理网络返回的 HTML 或 XML 数据。通过结合 Kanna 和 Swift 的网络请求功能,我们可以构建更加高效、灵活的网络交互模块。本文将详细介绍如何在 Swift 中使用 Ka…

《大语言模型的原理发展与应用》:此文为AI自动生成

《大语言模型的原理发展与应用》:此文为AI自动生成 一、引言:大语言模型,AI 时代的 “新引擎” 在当今数字化浪潮中,大语言模型宛如一颗璀璨的明星,照亮了人工智能发展的道路,成为推动各领域变革的核心驱…

RabbitMQ消息队列 面试专题

RabbitMQ消息队列 面试专题 RabbitMQ的实现原理为什么需要消息队列常见消息队列比较如何保证消息不丢失如何防止消息重复消费如何保证消息的有序性如何处理消息堆积 RabbitMQ的实现原理 RabbitMQ 是一个基于 AMQP(Advanced Message Queuing Protocol) 协…

【Hudi-SQL DDL创建表语法】

CREATE TABLE 命令功能 CREATE TABLE命令通过指定带有表属性的字段列表来创建Hudi Table。 命令格式 CREATE TABLE [ IF NOT EXISTS] [database_name.]table_name[ (columnTypeList)]USING hudi[ COMMENT table_comment ][ LOCATION location_path ][ OPTIONS (options_lis…

蓝桥杯备考:动态规划路径类DP之矩阵的最小路径和

如题,要求左上角到右下角的最短路径,我们还是老样子按顺序做 step1:确定状态表示 f[i][j]表示(1,1)到(i,j)的最短距离 step2 :推导状态表达方程 step3:确定填表顺序,应该是从上到下,从左到右 step4:初始化 step5 找结果&#…

【Maven】基于IDEA学习 Maven依赖 与 工程继承、聚合关系

文章目录 一、基于IDEA 进行Maven依赖管理1. 依赖管理概念2. Maven工程核心信息配置和解读(GAVP)3. Maven工程依赖管理配置依赖管理和依赖添加依赖版本统一提取和维护 4. 依赖范围5. Maven工程依赖下载失败错误解决6. Maven工程Build构建配置指定打包命名…

微信小程序注册组件

在微信小程序中注册组件分为自定义组件的创建和全局/局部注册,下面为你详细介绍具体步骤和示例。 自定义组件的创建 自定义组件由四个文件组成,分别是 .js(脚本文件)、.json(配置文件)、.wxml&#xff08…

贪心算法二

> 作者:დ旧言~ > 座右铭:松树千年终是朽,槿花一日自为荣。 > 目标:了解什么是贪心算法,并且掌握贪心算法。 > 毒鸡汤:有些事情,总是不明白,所以我不会坚持。早安! >…

react中的fiber和初次渲染

源码中定义了不同类型节点的枚举值 组件类型 文本节点HTML标签节点函数组件类组件等等 src/react/packages/react-reconciler/src/ReactWorkTags.js export const FunctionComponent 0; export const ClassComponent 1; export const IndeterminateComponent 2; // Befo…

Wireshark的OSPF报文抓包和分析(单区域ospf实验)

一、OSPF的5种数据包和7种状态机制 数据包 Hello:发现、建立邻居(邻接)关系、维持、周期保活;存在全网唯一的RID,使用IP地址表示 DBD:本地的数据库的目录(摘要),LSDB的…

前后分离文件上传案例,前端HTML,后端Net6开发的webapi(完整源代码)下载

文件上传功能在项目开发中非常实用,本案例前端用HTML页面的form表单实现,后端用Net6实现。 前后分离文件上传案例,前端HTML,后端Net6(完整源代码) 下载链接https://download.csdn.net/download/luckyext/9…

Linux之命令记录【一】

文章目录 前言几个重要的热键1.[Tab]按键2.[Ctrl]-c 按键3.[Ctrl]-d 按键4.[shift]{[PageUP]|[Page Down]}按键 线上求助(查看帮助信息)1. --help2.man page3.info page 用户身份1.su 基础指令1.date2.cal3.bc 系统字符集相关1.locale 文本编辑器1.nano …

Unity HDR颜色、基础颜色、强度强度、HDR面板Intensity之间的相互转换

目录 前言: 一、UnityHDR面板的规律 二、HDR与基础颜色转换,HDR强度获取,输入设置强度获取 1.基础色->HDR颜色 2.HDR颜色->基础色 3.获取HDR颜色在面板中的强度 4.获取HDR颜色在面板设置输入时的强度 前言: HDR&#…

T41LQ专为人工智能物联网(AIoT)应用设计,适用于智能安防、智能家居、机器视觉等领域 软硬件资料+样品测试

君正(Ingenic)T系列芯片涵盖多个型号,每个型号根据不同应用需求提供了多个版本。以下是各型号及其主要版本: 1. T23系列: T23N:标准版,适用于移动摄像机、安全监控、视频通话和视频分析等应用…

高频 SQL 50 题(基础版)| 高级字符串函数 / 正则表达式 / 子句:1667. 修复表中的名字、1527. 患某种疾病的患者、196. 删除重复的电子邮箱、176. 第二高的薪水、...

高级字符串函数 / 正则表达式 / 子句 1667. 修复表中的名字 题目链接:1667. 修复表中的名字 状态:学会了 思路: 要求修复名字(首字母大写,其他字母小写),按顺序返回。 想法就是取出名字这一列&…

《异步江湖:XHR、Promise 与 Event Loop 的恩怨情仇》

XMLHttpRequest XMLHttpRequest(简称 XHR)是浏览器提供的一个 JavaScript 对象,用于在客户端和服务器之间发送 HTTP 请求。它是实现 AJAX(Asynchronous JavaScript and XML) 技术的核心工具,允许网页在不…

C++课程设计【宿舍管理查询软件】

宿舍管理查询软件 一、题目描述二、源码以及说明宿舍管理查询软件设计与实现1. 系统设计思路1.1 功能需求1.2 数据结构2. 系统实现3. 代码说明3.1 数据结构3.2 功能实现3.3 文件存储4. 示例运行输入输出5. 总结其他QT文章推荐一、题目描述 (一)问题描述 为宿舍管理人员编写一…

MWC 2025 | 移远通信推出AI智能无人零售解决方案,以“动态视觉+边缘计算”引领智能零售新潮流

在无人零售市场蓬勃发展的浪潮中,自动售货机正经历着从传统机械式操作向AI视觉技术的重大跨越。 移远通信作为全球领先的物联网整体解决方案供应商,精准把握行业趋势,在2025世界移动通信大会(MWC)上宣布推出全新AI智能…