SQL面试必备:窗口函数、表关联与WHERE/HAVING区别

需积分: 0 4 下载量 65 浏览量 更新于2024-08-05 收藏 586KB PDF 举报
"这篇资料主要涵盖了SQL中的关键概念,包括比较运算符、范围查询、集合判断、字符匹配以及空值检查,还深入讲解了SQL窗口函数(如row_number、rank和dense_rank)及其与GROUP BY的区别,同时也介绍了SQL的表关联(如innerjoin、leftjoin、rightjoin和fulljoin),以及WHERE和HAVING子句的区别。" 在SQL中,数据分析师经常需要用到各种操作来处理数据。首先,比较运算符(如=、<、>、<=、>=、<>)是基础,它们用于比较单个或区间值,帮助筛选满足特定条件的记录。接着,确定范围的查询通常涉及到BETWEEN关键字,适用于连续数值范围。集合判断常使用IN操作符,适用于处理离散且少数的特定值。字符匹配是通过LIKE或ILIKE(不区分大小写)等实现模糊查询,这对于搜索含有特定模式的数据非常有用。判断是否为空,即IS NULL检查,对于处理可能存在空值的数据至关重要。 SQL窗口函数,如row_number、rank和dense_rank,是数据分析中的高级工具。它们允许在数据集上进行复杂的计算,例如按特定列排序并分配序号,或者在分组内进行排名。窗口函数不同于GROUP BY,后者主要用于对数据进行聚合,而窗口函数则可以在保持原始数据完整性的基础上,对特定字段进行排序或计算。 表关联是SQL中的另一核心概念,包括innerjoin(仅返回匹配的行)、leftjoin(保留左表所有行,右表无匹配时为NULL)、rightjoin(保留右表所有行,左表无匹配时为NULL)和fulljoin(返回两表所有行,无论是否有匹配)。LEFT/RIGHT JOIN实际上是LEFT/RIGHT OUTER JOIN的缩写,强调即使没有匹配项,也会包含原表的所有行。 WHERE子句用于初步过滤数据,限制返回的行,而HAVING子句是在聚合函数应用后的过滤,通常与GROUP BY一起使用,因为它允许基于聚合后的结果进行筛选。在SQL执行顺序中,HAVING通常在WHERE和GROUP BY之后,窗口函数(window函数)则位于这两者之间。 这些知识点是数据分析师面试中可能遇到的关键问题,掌握它们能够有效提升数据处理和分析的能力。通过学习和理解这些概念,数据分析师能够更高效地从海量数据中提取有价值的信息。