目 录CONTENT

文章目录

数据分析师必备的SQL:数据提取与转换的核心查询

Administrator
2025-10-21 / 0 评论 / 0 点赞 / 0 阅读 / 0 字

📢 转载信息

原文链接:https://www.kdnuggets.com/sql-for-data-analysts-essential-queries-for-data-extraction-transformation

原文作者:Jayita Gulati


SQL for Data Analysts: Essential Queries for Data Extraction & Transformation
Image by Editor

 

数据分析师必备的SQL:数据提取与转换的核心查询

引言

数据分析师需要处理存储在数据库中的海量信息。在他们创建报告或发现洞察之前,必须首先提取正确的数据并准备投入使用。这就是 SQL(结构化查询语言)发挥作用的地方。SQL是一种帮助分析师检索数据、清理数据并将其组织成所需格式的工具。


在本文中,我们将探讨每位数据分析师都应该知道的最重要的SQL查询。

1. 使用 SELECT 选择数据

SELECT 语句是SQL的基础。你可以选择特定的列,或者使用 * 来返回所有可用字段。

SELECT name, age, salary FROM employees;

此查询仅从 employees 表中提取 nameagesalary 列。


2. 使用 WHERE 过滤数据

WHERE 用于根据你的条件来缩小行范围。它支持比较运算符和逻辑运算符,以创建精确的过滤器。

SELECT * FROM employees WHERE department = 'Finance';

WHERE 子句仅返回属于财务部门的员工。


3. 使用 ORDER BY 排序结果

ORDER BY 子句按升序或降序对查询结果进行排序。它用于根据数字、文本或日期值对记录进行排名。

SELECT name, salary FROM employees ORDER BY salary DESC;

此查询按薪水降序排列员工,因此薪水最高的员工排在最前面。


4. 使用 DISTINCT 删除重复项

DISTINCT 关键字只返回列中的唯一值。当生成干净的类别或属性列表时,它非常有用。

SELECT DISTINCT department FROM employees;

DISTINCT 会删除重复的条目,每个部门名称只返回一次。


5. 使用 LIMIT 限制结果数量

LIMIT 子句限制查询返回的行数。它通常与 ORDER BY 结合使用,以显示顶级结果或从大型表中抽样数据。

SELECT name, salary FROM employees ORDER BY salary DESC LIMIT 5;

通过将 ORDER BYLIMIT 结合,此查询检索薪水最高的 5 位员工。


6. 使用 GROUP BY 聚合数据

GROUP BY 子句对在指定列中具有相同值的行进行分组。它与 SUM()AVG()COUNT() 等聚合函数一起使用,以生成摘要。

SELECT department, AVG(salary) AS avg_salary FROM employees GROUP BY department;

GROUP BY 按部门组织行,AVG(salary) 计算每个组的平均薪水。


7. 使用 HAVING 过滤分组

HAVING 子句在应用聚合后过滤分组结果。当条件依赖于聚合值(如总数或平均值)时,使用它。

SELECT department, COUNT(*) AS num_employees FROM employees GROUP BY department HAVING COUNT(*) > 10;

该查询计算每个部门的员工人数,然后过滤掉员工人数少于 10 人的部门。


8. 使用 JOIN 合并表

JOIN 子句根据相关列合并两个或多个表中的行。它有助于检索连接的数据,例如具有其部门的员工信息。

SELECT e.name, d.name AS department FROM employees e JOIN departments d ON e.dept_id = d.id;

在这里,JOIN 将员工与其匹配的部门名称合并在一起。


9. 使用 UNION 合并结果

UNION 将两个或多个查询的结果合并到一个数据集中。它会自动删除重复项,除非你使用 UNION ALL,后者会保留重复项。

SELECT name FROM employees UNION SELECT name FROM customers;

此查询将来自 employees 表和 customers 表的名称合并到一个列表中。


10. 字符串函数

SQL 中的字符串函数用于操作和转换文本数据。它们有助于完成合并姓名、更改大小写、修剪空格或提取字符串部分等任务。

SELECT CONCAT(first_name, ' ', last_name) AS full_name, LENGTH(first_name) AS name_length FROM employees;

此查询通过合并名字和姓氏来创建一个全名,并计算名字的长度。


11. 日期和时间函数

SQL 中的日期和时间函数允许你处理时间序列数据,用于分析和报告。它们可以计算差异、提取年或月等组件,以及通过加减时间间隔来调整日期。例如,使用 CURRENT_DATEDATEDIFF() 可以衡量任期。

SELECT name, hire_date, DATEDIFF(CURRENT_DATE, hire_date) AS days_at_company FROM employees;

它通过从当前日期减去入职日期来计算每位员工在公司工作的天数。


12. 使用 CASE 创建新列

CASE 表达式创建带有条件逻辑的新列,类似于 if-else 语句。它允许你在查询中动态地对数据进行分类或转换。

SELECT name, CASE WHEN age < 30 THEN 'Junior' WHEN age BETWEEN 30 AND 50 THEN 'Mid-level' ELSE 'Senior' END AS experience_level FROM employees;

CASE 语句根据年龄范围创建一个名为 experience_level 的新列。


13. 使用 COALESCE 处理缺失值

COALESCE 通过返回列表中的第一个非空值来处理缺失值。它常用于将 NULL 字段替换为默认值,例如“N/A”。

SELECT name, COALESCE(phone, 'N/A') AS contact_number FROM customers;

在这里,COALESCE 将缺失的电话号码替换为“N/A”。


14. 子查询

子查询是嵌套在另一个查询中的查询,用于提供中间结果。它们用于 WHEREFROMSELECT 子句中,以动态地过滤、比较或构建数据集。

SELECT name, salary FROM employees WHERE salary > (SELECT AVG(salary) FROM employees);

此查询通过使用嵌套的子查询,将每位员工的薪水与公司的平均薪水进行比较。


15. 窗口函数

窗口函数在一组行上执行计算,同时仍返回单独的行详细信息。它们常用于排名、运行总计和比较行之间的值。

SELECT name, salary, RANK() OVER (ORDER BY salary DESC) AS salary_rank FROM employees;

RANK() 函数根据薪水为每位员工分配排名,而无需对行进行分组。


结论

掌握 SQL 是任何数据分析师最有价值的技能之一,因为它为提取、转换和解释数据提供了基础。从过滤和聚合到连接和重塑数据集,SQL 都能帮助分析师将原始信息转化为有意义的见解,从而推动决策制定。通过精通基本查询,分析师不仅可以简化工作流程,还可以确保分析的准确性和可扩展性。


Jayita Gulati 是一位热衷于构建机器学习模型的机器学习爱好者和技术作家。她拥有利物浦大学计算机科学硕士学位。




🚀 想要体验更好更全面的AI调用?

欢迎使用青云聚合API,约为官网价格的十分之一,支持300+全球最新模型,以及全球各种生图生视频模型,无需翻墙高速稳定,文档丰富,小白也可以简单操作。

0

评论区