写作原因:
在当今数据驱动的商业环境中,SQL作为数据分析师的核心工具,其重要性日益凸显。它不仅是查询和操作数据库的语言,更是连接数据与洞察力的桥梁。随着大数据技术的飞速发展,众多顶级企业,包括华为等大厂,已经将SQL基础能力的考察纳入到面试流程中,作为评估候选人是否具备高效数据处理能力的关键指标。
因此,对于有志于在数据分析领域深耕的专业人士来说,持续学习并精进SQL技能变得尤为关键。通过不断实践和应用SQL,不仅可以提升个人的数据处理效率,更能在实际工作中快速准确地挖掘数据价值,为企业决策提供有力支持。掌握SQL,意味着你拥有了解锁数据秘密的钥匙,能够在数据的海洋中游刃有余。今天介绍几个基本问题
having 和 where 的 区 别
-
应用阶段:
WHERE
子句用于过滤原始记录,在聚合(如GROUP BY
)之前应用。HAVING
子句用于过滤聚合后的记录,在聚合(如GROUP BY
)之后应用。
-
使用对象:
WHERE
子句不能用于聚合函数(如SUM()
、AVG()
、COUNT()
等),因为它在聚合前应用。HAVING
子句可以用于聚合函数,因为它在聚合后应用。
-
语法位置:
WHERE
子句在FROM
子句和任何JOIN
子句之后,GROUP BY
之前。HAVING
子句在GROUP BY
子句之后,ORDER BY
之前。
代码演示:
使用WHERE
SELECT product, amount
FROM sales
WHERE amount > 20;
这将返回 amount
大于 20 的所有记录。在这里,过滤是在聚合之前完成的。
使用 HAVING
子句:
SELECT product, SUM(amount) as total_amount
FROM sales
GROUP BY product
HAVING SUM(amount) > 50;
union和 join 的 区 别
JOIN
:
应用阶段:在查询过程中,将多个表的数据按行进行合并。数据通过指定的条件进行匹配和组合,形成一个新的结果集。
UNION
:
应用阶段:在查询的最后阶段,将多个查询结果按列进行合并。不同的结果集独立执行,然后将其合并成一个统一的结果集。
使用对象
JOIN
:
使用对象:用于在一个查询中从两个或多个表中选择相关的数据列。通常用于表之间存在逻辑关联的情况。例如,实际中,客户名单的表格和订单的表格,使用JOIN
帮助我们梳理客户的订单情况
连接条件:JOIN
需要基于特定的条件(通常是主键与外键的关系)来匹配表中的记录。
UNION
:
使用对象:用于将两个或多个查询的结果集进行合并,要求各个查询的列数和数据类型一致。适用于合并结构相似但来源不同的数据。例如,从两个不同的年份的销售表中合并所有销售记录。
合并条件: UNION
并不需要基于特定的条件进行匹配,只需要确保所有查询的结果集的列数和数据类型一致即可。
语法位置
JOIN
:
语法位置: JOIN
: 子句在 FROM 子句之后使用,连接的表之间通过 ON 或 USING 子句来指定匹配条件。
代码演示
SELECT a.column1, b.column2
FROM table1 a
INNER JOIN table2 b ON a.common_field = b.common_field;
UNION
:
语法位置:UNION
子句在各个 SELECT 语句之后使用,用于将两个或多个查询的结果集进行合并。
SELECT column1, column2
FROM table1
UNION
SELECT column1, column2
FROM table2;
总结
JOIN
用于将多个表按行合并,基于匹配条件。UNION
用于将多个查询结果按列合并,默认去除重复行。- 选择
JOIN
或UNION
取决于具体的数据合并需求。