当前位置: 首页 > article >正文

数据科学所需的 SQL 知识

原文towardsdatascience.com/sql-knowledge-you-need-for-data-science-5cf0c15515e4根据 365DataScience文章该文章调查了 1,000 个 LinkedIn 数据科学职位发布其中 60%要求具备 SQL 技能。这告诉我们什么好吧如果数据科学家想要增加获得工作的机会SQL 是一项必备技能。在这篇文章中我将讨论你为了获得入门级数据科学职位所需具备的 SQL 知识并提供一些在我学习 SQL 时对我有帮助的资源和建议。cdn.embedly.com/widgets/media.html?srchttps%3A%2F%2Fwww.youtube.com%2Fembed%2FT60XcVStwto%3Ffeature%3Doembeddisplay_nameYouTubeurlhttps%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DT60XcVStwtoimagehttps%3A%2F%2Fi.ytimg.com%2Fvi%2FT60XcVStwto%2Fhqdefault.jpgkeya19fcc184b9711e1b4764040d3dc5c07typetext%2Fhtmlschemayoutube知识根据我的经验对于许多入门级数据科学职位来说你不需要成为 SQL 的专家你只需要知道如何查询并获取你需要分析以及构建机器学习模型的数据。例如创建 ETL提取、转换、加载管道和管理数据库通常是数据科学家职责之外的工作这更多是数据工程师的工作。然而如果你对这些类型的事情感兴趣这不应该阻止你学习它们概述首先你应该了解关系数据库和不同类型的 SQL 版本。我并不是说你需要学习这些版本只是理解它们之间的差异以及为什么存在某些版本。把这当作在深入主要内容之前的一些初步阅读根据我的经验我建议学习 MySQL 或 PostgreSQL因为这些都是整个行业中应用最广泛的。然而所有 SQL 版本中的语法和函数都是相同的所以你不必过于担心这一点。如果你学会了其中一个其他的就相对容易掌握了所以不要过度思考。如果你感兴趣想了解不同 SQL 版本的差异请参阅这篇文章。基本功能老实说我在日常工作中 95%的时间都在使用基本的 SQL 函数进行查询。正如我之前所说作为数据科学家我主要使用 SQL 来获取数据和进行基本转换。实际上我在 Pandas 中进行更复杂的数据转换和数据操作因为它更容易通过单元和集成测试进行测试。无论如何你应该知道的最重要的 SQL 命令是对于所有这些命令我都提供了使用假想的Employees表执行它们的示例。SELECTFROM*标准查询SELECT*FROM Employees这个命令从表中选择列。*命令从Employees表中获取所有列。ALTER, INSERT, CREATE修改表--CREATE table CREATE TABLE Employees(EmployeeID INT PRIMARY KEY,FirstName NVARCHAR(50),LastName NVARCHAR(50),BirthDate DATE,Salary DECIMAL(10,2));--INSERT a new record into the Employees table INSERT INTO Employees(EmployeeID,FirstName,LastName,BirthDate,Salary)VALUES(1,John,Doe,1980-01-01,50000.00);--ALTER the Employees table to add a new column ALTER TABLE Employees ADD Department VARCHAR(50);在这里我们创建一个名为Employees的表并定义列及其主键。然后我们使用INSERT INTO向这个数据框添加一行。最后我们使用ALTER命令向表中添加一个名为 Department 的新列。GROUP BY, ORDER BY--GROUP BY SELECT Department,COUNT(*)AS NumberOfEmployees FROM Employees GROUP BY Department;--ORDER BY SELECT*FROM Employees ORDER BY LastName ASC,FirstName ASC;这些命令相当直观。ORDER BY命令只是对表中的一列进行排序而GROUP BY命令只是按列进行聚合。在这里我们按部门进行员工计数。WHERE, AND, OR, BETWEEN, IN, HAVING过滤表--WHERE,AND,andOR SELECT*FROM Employees WHERE Salary40000AND DepartmentSales;--BETWEEN SELECT*FROM Employees WHERE BirthDate BETWEEN1970-01-01AND1990-12-31;--IN SELECT*FROM Employees WHERE Department IN(Sales,HR);--GROUP BYandHAVING SELECT Department,AVG(Salary)AS AverageSalary FROM Employees GROUP BY Department HAVING AVG(Salary)45000;WHERE和HAVING命令通过一列来过滤数据框。在这个例子中我们通过薪水、生日和部门进行过滤。AVG, COUNT, MIN, MAX, SUM聚合函数--AVG,COUNT,MIN,MAX,SUM SELECT AVG(Salary)AS AverageSalary,COUNT(EmployeeID)AS NumberOfEmployees,MIN(Salary)AS MinimumSalary,MAX(Salary)AS MaximumSalary,SUM(Salary)AS TotalSalary FROM Employees;s这些命令从数据集中创建统计信息这个返回值只有一行包含平均薪水、总员工数、最低薪水、最高薪水和总薪水。DISTINCTSELECT DISTINCT Department FROM Employees;如果某一列中有重复条目DISTINCT命令将只获取唯一值。DATEADD, DATEDIFF, DATEPART日期和时间函数--DATEADD:Add one year to the birthdate SELECT EmployeeID,FirstName,LastName,DATEADD(year,1,BirthDate)AS BirthDatePlusOneYear FROM Employees;--DATEDIFF:Calculate age of employees SELECT EmployeeID,FirstName,LastName,DATEDIFF(year,BirthDate,GETDATE())AS Age FROM Employees;--DATEPART:Extract the year of birth SELECT EmployeeID,FirstName,LastName,DATEPART(year,BirthDate)AS BirthYear FROM Employees;在这里DATEADD函数是将生日增加一年DATEDIFF函数是获取员工生日和当前日期之间的年差而DATEPART函数是从生日中获取出生年份。CASE在其他语言中基本上是 if-else 语句SELECT EmployeeID,FirstName,LastName,CASE WHEN Salary60000THENHighWHEN Salary BETWEEN40000AND60000THENMediumELSELowEND AS SalaryCategory FROM Employees;CASE的作用类似于条件 if-else。在这种情况下没有开玩笑如果薪水超过 60,000 则为 “高”在 40,000 到 60,000 之间为 “中”否则为 “低”。为了清楚起见我制作的这些完全随机的过滤器不应该被认真对待。FULL JOIN, LEFT JOIN, RIGHT JOIN, INNER JOIN, UNION所有类型的连接--INNER JOIN SELECT e.EmployeeID,e.FirstName,e.LastName,d.DepartmentName FROM Employees e INNER JOIN Departments d ON e.DepartmentIDd.DepartmentID;--LEFT JOIN SELECT e.EmployeeID,e.FirstName,e.LastName,d.DepartmentName FROM Employees e LEFT JOIN Departments d ON e.DepartmentIDd.DepartmentID;--RIGHT JOIN SELECT e.EmployeeID,e.FirstName,e.LastName,d.DepartmentName FROM Employees e RIGHT JOIN Departments d ON e.DepartmentIDd.DepartmentID;--FULL JOIN SELECT e.EmployeeID,e.FirstName,e.LastName,d.DepartmentName FROM Employees e FULL JOIN Departments d ON e.DepartmentIDd.DepartmentID;--UNION SELECT FirstName,LastName FROM Employees UNION SELECT FirstName,LastName FROM Managers;JOIN命令简单地将两个表在共同的列和 id 上连接起来。请参阅这里了解不同类型及其底层操作的视觉解释。连接操作可能是最棘手的所以请确保你理解它们我仍然会犯错误在我第一份工作中就因为它们而有过糟糕的经历但我已经在这方面变得更好能够更好地捕捉到它们。所以不要像我一样要彻底地学习它们了解所有这些基本函数可能使你能够通过任何包含 SQL 练习的入门级数据科学面试。高级函数一旦你掌握了基础知识投入更多时间学习一些更高级的函数是值得的。我在日常工作中经常使用其中的一些因此它们非常有用尤其是在构建大型数据集时因为 SQL 仓库中的计算时间比 Python 快得多。公用表达式表 (CTE) 和子查询--Common Table Expression(CTE)WITH SalesCTE AS(SELECT EmployeeID,SUM(SalesAmount)AS TotalSales FROM Sales GROUP BY EmployeeID)SELECT e.EmployeeID,e.FirstName,e.LastName,s.TotalSales FROM Employees e JOIN SalesCTE s ON e.EmployeeIDs.EmployeeID;--Subquery SELECT EmployeeID,FirstName,LastName,Salary FROM Employees WHERE Salary(SELECT AVG(Salary)FROM Employees);这里发生的事情是我们创建了一个名为SalesCTE的新表然后我们将这个新表与Employees表连接起来。这是一个 CTE公用表达式表的例子。子查询并不是创建一个新表而是从一个表中提取一个值来过滤。在这种情况下它是平均薪水。用户定义函数 (UDFs)CREATE FUNCTION dbo.GetEmployeeFullName(EmployeeID INT)RETURNS NVARCHAR(100)AS BEGIN DECLARE FullName NVARCHAR(100);SELECT FullNameFirstName LastName FROM Employees WHERE EmployeeIDEmployeeID;RETURN FullName;END;--Using the UDF SELECT dbo.GetEmployeeFullName(EmployeeID)AS FullName FROM Employees;UDFs用户定义函数在其他语言中的工作方式与常规函数非常相似。在这里我们创建一个函数该函数获取员工的完整姓名并将其返回为单列。窗口函数 (RANK, ROW_NUMBER, DENSE_RANK)--ROW_NUMBER SELECT EmployeeID,FirstName,LastName,Salary,ROW_NUMBER()OVER(PARTITION BY Department ORDER BY Salary DESC)AS RowNum FROM Employees;--RANK SELECT EmployeeID,FirstName,LastName,Salary,RANK()OVER(PARTITION BY Department ORDER BY Salary DESC)AS Rank FROM Employees;--DENSE_RANK SELECT EmployeeID,FirstName,LastName,Salary,DENSE_RANK()OVER(PARTITION BY Department ORDER BY Salary DESC)AS DenseRank FROM Employees;窗口函数在多个行上执行与当前分析行相关的计算。所以在这种情况下我们使用ROW_NUMBER()函数根据员工在其相应部门的薪水进行编号。RANK()做类似的事情并按每个部门的薪水对员工进行排名。DENSE_RANK()类似但如果两个员工有相同的薪水他们的排名相同。字符串操作和正则表达式--String operations:CONCAT,SUBSTRING,REPLACE,etc.SELECT CONCAT(FirstName, ,LastName)AS FullName,SUBSTRING(FirstName,1,1)AS FirstInitial,REPLACE(LastName,a,o)AS ModifiedLastName FROM Employees;--Regex using LIKE SELECT EmployeeID,FirstName,LastName FROM Employees WHERE FirstName LIKEJ%;--First name startswithJ--Regex using PATINDEX(SQL Server)SELECT EmployeeID,FirstName,LastName FROM Employees WHERE PATINDEX(%[0-9]%,LastName)0;--Last name contains a digitCONCAT将两个字符串合并在一起SUBSTRING过滤字符串REPLACE替换字符串中的字母。通过LIKE J%获取对应列中以 J 开头的值。最后PATINDEX(%[0-9]%, LastName) 0这是一个模式索引搜索用于在LastName中找到 0 到 9 之间的任何数字的第一个出现。还有许多其他东西要学习但这些高级技术是我作为数据科学家最常使用的技术。我相信根据你的行业和组织还会有其他事情出现。SQL 不是一个庞大的语言但这里仍然有大量的函数。如果你感兴趣请查看这里以获取完整列表。其他事项如果你手头有更多时间你可以尝试学习围绕 SQL 的基础设施例如 SQL 服务器、数据库管理、数据仓库、数据平台扩展、查询优化和构建 ETL 管道。上面的列表中的大部分都是数据工程角色的部分。如果你对此感兴趣这篇博客提供了一个如何成为数据工程师的优秀路线图。说实话我对这些主题没有深入的了解因为这些是数据工程师比数据科学家更关注的事情。但如果它们对你来说很有趣请随意学习它们我也计划在将来某个时候介绍它们因为这将使我成为一个更全面的数据科学家并增加我的价值。但是正如我经常说的你不可能学会所有东西资源关于资源我在学习 SQL 时使用了W3Schools和Tutorialspoint。它们是完全免费的并且真正很好地涵盖了基础知识。我更喜欢把它们看作是参考文本而不是完整的课程但如果你是初学者它们是一个很好的起点并且包含供你练习的练习题。SQL 教程SQL 教程如果你想在课程之外进行更多练习那么像 Hacker Rank 和Leetcode这样的网站是很好的。在我感到舒适回答入门级面试问题之前我在 Hacker Rank 上做了大约 50 个 SQL 问题。我不会太担心这个数字它可能比你预期的 50 个问题多或少专注于理解当你感到舒适时你就会知道。解决 SQL 代码挑战建议我会给刚开始学习 SQL 的人提供的三条主要建议是不要担心或浪费太多时间挑选“正确”的课程选择你喜欢的然后开始。作为一个初学者任何入门课程都会有所帮助并且很可能会涵盖相同的话题。每天练习并确保你做练习题来理解 SQL一万小时规则一万次迭代规则在这里适用就像在其他所有事情上一样。有耐心我保证一切最终都会慢慢理解。你不可能在一天之内学会所有东西或掌握 SQL但你可以用两周的时间学习足够的 SQL 知识以获得一个入门级职位。这正是我所做的你可以在下面的帖子中阅读我整个 SQL 之旅。两周内从零开始学习 SQL我希望这篇文章已经给了你足够的 SQL 知识让你能够获得那个入门级的数据科学职位你需要的 SQL 技能没有 Python 那么广泛而且由于 SQL 稍微容易管理且语言规模较小它们应该需要更少的时间来学习但无论如何它们仍然是必不可少的。另一件事我有一个免费的通讯Dishing the Data我在那里分享成为更好的数据科学家每周的小贴士我在该领域的总体经验以及我过去一周的一些想法。Dishing The Data | Egor Howell | Substack与我联系LinkedIn,X (Twitter), 或Instagram。我的**YouTube 频道**学习技术数据科学和机器学习概念

相关文章:

数据科学所需的 SQL 知识

原文:towardsdatascience.com/sql-knowledge-you-need-for-data-science-5cf0c15515e4 根据 365DataScience文章,该文章调查了 1,000 个 LinkedIn 数据科学职位发布,其中 60%要求具备 SQL 技能。 这告诉我们什么? 好吧&#xff…...

掌握网易云音乐NCM文件转换:3分钟实现音乐格式自由

掌握网易云音乐NCM文件转换:3分钟实现音乐格式自由 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM加密文件无法在车载音响、手机播放器或其他设备上播放而烦恼吗?ncmdump作为一款专…...

JetFormer:Transformer在高能物理实时触发系统中的创新应用

1. JetFormer项目概述在大型强子对撞机(LHC)实验中,每秒会产生数百万次粒子碰撞事件,其中仅约千分之一的事件具有物理研究价值。传统触发系统采用级联式筛选策略,但面对不断提升的对撞亮度,现有方法已接近性…...

SQL 解释:常见表表达式

原文:towardsdatascience.com/sql-explained-common-table-expressions-fc23e4675890 在 SQL 中,常见的表表达式(或称为 CTE,即它们所知)是临时的、命名的结果集,包含从另一个 SQL 查询中派生的中间数据。一…...

别再折腾系统CUDA了!用Anaconda为每个PyTorch项目独立配置CUDA 11.7和cuDNN 8.9(保姆级避坑)

深度学习环境隔离实战:用Anaconda为PyTorch项目定制专属CUDA工具链 在复现论文或切换不同深度学习项目时,开发者最头疼的莫过于CUDA版本冲突问题。系统全局安装的CUDA往往无法满足所有项目的需求,而反复卸载重装又容易导致环境崩溃。本文将介…...

【flutter for open harmony】第三方库Flutter 鸿蒙版 搜索功能 实战指南(适配 1.0.0)✨

Flutter实战:开源鸿蒙搜索功能组件 Flutter 三方库 cached_network_image 的鸿蒙化适配与实战指南 欢迎加入开源鸿蒙跨平台社区: https://openharmonycrossplatform.csdn.net 本文详细介绍如何在Flutter鸿蒙应用中实现一个功能完善的搜索功能&#xff0…...

Flutter 凉了没?Flutter 2026 的未来行程和规划,一些有趣的变化

最近刚好有人问我,说现在 Flutter 官方好像没什么消息了?都没什么 Flutter 活动?我只想说,现在办活动的,不是 AI 主题的谁给经费? 刚好这两天看到了 Flutter 官方宣布的 2026 的一些全球行程,其…...

汽车电源极性保护二极管选型与设计指南

1. 汽车电源极性保护二极管选型指南 在汽车电子系统设计中,电源极性保护二极管就像电路中的"单向阀门",它只允许电流单向流动,防止反向电压损坏敏感电子元件。作为一名汽车电子工程师,我曾亲眼见过因极性保护不足导致整…...

2026食品包装设计公司靠谱不贵推荐,食品厂家做包装高性价比优选

2026食品包装设计公司靠谱不贵推荐,食品厂家做包装高性价比优选食品行业做包装,和其他品类完全不一样,不仅要颜值好看、货架吸睛,更要严格符合食品安全生产规范、材质合规、标注合规、量产好落地。很多食品工厂、中小食品品牌踩坑…...

Windows APK安装器终极指南:告别模拟器,直接在电脑上安装Android应用

Windows APK安装器终极指南:告别模拟器,直接在电脑上安装Android应用 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 还在为在Windows电脑上运行…...

手把手带敲springboot3 vue3校园论坛系统

今天我们分享一个非常经典的实战项目——校园论坛系统,论坛系统比较核心的部分就是发帖,多级评论功能。 技术栈 前后端分离项目 后端:SpringBoot3 MyBatis 前端:Vue3 Element-Plus Vue-Router Axios 数据库: MyS…...

“系统整容包”小工具,专治Win11各种不服!

昨天帮我妈弄电脑,她死活找不到“我的电脑”。原来Win11桌面默认不显示这些图标,老人家急得直拍显示器。我用这小工具一键给她安排上,老太太瞬间眉开眼笑。突然觉得,科技再怎么发展,顺手才是王道。咱就是说&#xff0c…...

【仅限制造企业CTO可见】Dify工业知识库私有化部署性能压测报告:单节点支撑200+并发设备手册检索,TP99<850ms(附NVIDIA Jetson Orin实测参数)

更多请点击: https://intelliparadigm.com 第一章:Dify工业知识库智能检索 Dify 作为开源低代码 AI 应用开发平台,其内置的 RAG(检索增强生成)能力为构建垂直领域知识库提供了强大支撑。在工业场景中,设备…...

别再用Python写AI后端了!PHP 9.0原生协程实现类ChatGPT实时流响应——附可运行GitHub仓库(限前200名领取)

更多请点击: https://intelliparadigm.com 第一章:PHP 9.0异步编程与AI聊天机器人教程概览 PHP 9.0 引入了原生协程(Native Coroutines)与 async/await 语法支持,标志着 PHP 正式迈入现代异步编程时代。该版本底层基于…...

大模型微调工程实践2026:从SFT到DPO的完整技术路线图

引言:微调不是万能药,但很多时候不可缺少 “我们能不能直接用 Prompt Engineering 代替微调?”——这是 2026 年企业 AI 团队最常问的问题之一。答案是:在很多场景下可以,但有几类问题 Prompt 搞不定:1. 输…...

Siemens 6SC9811-4DA04转换器模块

SIEMENS 6SC9811-4DA04 是西门子 SIMODRIVE 系列中的一款高性能模块,在工业自动化系统中承担信号处理与控制功能。以下是综合整理的15条主要特点:中间15条特点:产品定位多样:有描述称为多重脉冲模块,用于处理多路输入脉…...

开源API网关claude2api:自建Claude代理实现稳定高效调用

1. 项目概述:一个开源API网关的诞生与价值最近在折腾大模型应用开发的朋友,估计都绕不开一个痛点:如何稳定、高效、低成本地调用像Claude这样的闭源大模型API。官方API固然稳定,但价格、速率限制、以及在某些地区的可用性&#xf…...

BGA插座系统GHz高速互连设计与优化实践

1. BGA插座系统的GHz高速互连挑战在当今高性能集成电路设计中,BGA(球栅阵列)封装已成为主流互连方案。作为连接芯片与PCB的关键桥梁,BGA插座系统在原型验证、测试调试和量产环节中扮演着不可替代的角色。我曾参与过多个采用BGA封装…...

SIEMENS 6SC6140-0FE01 电源模块

SIEMENS 6SC6140-0FE01 是西门子 SIMODRIVE 611 系列数控系统中的电源/驱动模块,为伺服电机提供精确的电力控制和驱动支持。以下是该模块的15条主要产品特点:中间15条特点:属于 SIMODRIVE 611 系列,专为数控机床和自动化生产线设计…...

Windows Defender配置深度解析:系统安全组件的定制化调整实战指南

Windows Defender配置深度解析:系统安全组件的定制化调整实战指南 【免费下载链接】windows-defender-remover A tool which is uses to remove Windows Defender in Windows 8.x, Windows 10 (every version) and Windows 11. 项目地址: https://gitcode.com/gh_…...

别再对着AAL脑区缩写发懵了!这份超全对照表+Python/SPM实战指南帮你搞定

神经影像数据分析实战:AAL脑区缩写解析与Python/SPM高效应用指南 第一次打开SPM的统计结果时,那些密密麻麻的缩写标签让我彻底懵了——PreCG.L、SFGdor.R、PCUN.L...它们究竟对应大脑哪个部位?又该如何在论文中准确描述这些激活区域&#xff…...

TV Bro电视浏览器终极指南:专为智能电视优化的免费开源浏览器

TV Bro电视浏览器终极指南:专为智能电视优化的免费开源浏览器 【免费下载链接】tv-bro Simple web browser for android optimized to use with TV remote 项目地址: https://gitcode.com/gh_mirrors/tv/tv-bro TV Bro是一款专为智能电视和遥控器操作优化的A…...

手把手教你用Arduino+DS1302做个带断电记忆的电子时钟(附完整代码与接线图)

从零打造断电记忆电子钟:Arduino与DS1302的完美组合 1602液晶屏上跳动的数字突然熄灭又亮起,但时间却分秒不差——这就是带断电记忆功能的电子钟魅力所在。对于刚接触Arduino的创客来说,用DS1302时钟模块构建一个永不掉时的电子钟&#xff0c…...

2026 年 ERP 系统大盘点:主流 ERP 系统对比与选型指南

随着企业数字化转型的深入推进,ERP 系统早已从 “可选工具” 变成了企业日常运营的 “刚需基础设施”。一套合适的ERP 系统能够打通企业内部信息壁垒,规范管理流程,大幅提升全员运营效率;但如果选型不当,不仅会造成资金…...

STM32F103/407实战:用DMP库5分钟搞定MPU6050姿态解算,告别复杂算法

STM32与MPU6050实战:5分钟极简姿态解算指南 1. 硬件准备与环境搭建 姿态感知是许多嵌入式项目的核心需求,从无人机到机器人控制,再到VR设备,都离不开精确的姿态数据。MPU6050作为一款经典的6轴运动传感器,集成了3轴加速…...

TMS320C6678 DSP中断配置避坑指南:CSL与SYS/BIOS两种方法实战对比

TMS320C6678 DSP中断开发实战:CSL与SYS/BIOS双方案深度解析 当工程师首次接触TMS320C6678这款多核DSP时,中断系统的配置往往成为第一个技术门槛。面对手册中复杂的INTC、CIC、事件映射等概念,开发者常常陷入选择困境:是直接使用CS…...

DASH技术:LLM确定性训练的革命性突破

1. 项目概述:DASH如何革新LLM确定性训练在大型语言模型(LLM)训练领域,确定性计算一直是个令人头疼的难题。想象一下,当你花费数百万美元训练一个模型时,却发现每次运行得到的结果都有微小的差异——这就像试…...

3大技术突破:Windows原生运行安卓应用的创新解决方案

3大技术突破:Windows原生运行安卓应用的创新解决方案 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 还在为Windows与Android生态的隔阂而烦恼吗&#xff1…...

MCP协议解析:构建AI与外部工具的动态桥梁

1. 项目概述:一个连接技能与执行的智能桥梁最近在折腾一个挺有意思的开源项目,叫Glowboth/skillsync-mcp。乍一看这个名字,可能会有点摸不着头脑,它不像那些直接叫“XX管理系统”或“XX工具包”的项目那么直白。但如果你拆解一下&…...

别再为动图发愁!3款免费工具搞定WebP转GIF(附详细操作截图)

3款零门槛工具助你轻松实现WebP转GIF 在社交媒体运营或内容创作中,动图素材往往能带来更高的互动率。但当你从网络下载的素材是WebP格式时,如何快速转换为通用的GIF格式?本文将为你推荐三款真正免费的转换工具,涵盖在线服务、桌面…...