📄️ SELECT 子句
SELECT 子句指定查询将返回的列列表。虽然它在子句中最先出现,但在逻辑上,这里的表达式会在最后阶段才执行。SELECT 子句可包含用于转换输出的任意表达式,也可包含聚合函数和窗口函数。
📄️ FROM 与 JOIN 子句
FROM 子句用于指定查询后续部分要处理的数据来源。从逻辑上看,查询从 FROM 子句开始执行。FROM 子句可以包含单个表、多个通过 JOIN 子句连接的表组合,或子查询节点中的另一个 SELECT 查询。Goose 还支持可选的 FROM-first 语法,使你可以在没有 SELECT 语句的情况下发起查询。
📄️ WHERE Clause
WHERE 子句用于指定应用于数据的筛选条件。这样你可以只选择感兴趣的数据子集。从逻辑上讲,WHERE 子句会在 FROM 子句之后立即应用。
📄️ GROUP BY 子句
GROUP BY 子句用于指定在 SELECT 子句中执行聚合时应使用哪些分组列。
📄️ GROUPING SETS 子句
GROUPING SETS、ROLLUP 和 CUBE 可用于 GROUP BY 子句,以便在同一条查询中按多个维度进行分组。
📄️ HAVING 子句
HAVING 子句可在 GROUP BY 子句之后使用,用于在分组完成之后提供筛选条件。就语法而言,HAVING 子句与 WHERE 子句相同;但 WHERE 发生在分组之前,而 HAVING 发生在分组之后。
📄️ ORDER BY 子句
ORDER BY 是输出修饰子。从逻辑上讲,它在查询接近末尾时应用(如果存在,位于 LIMIT 或 OFFSET 之前)。
📄️ LIMIT 与 OFFSET 子句
LIMIT 是输出修饰子。从逻辑上讲,它在查询的最后阶段应用。LIMIT 子句用于限制返回的行数。OFFSET 子句用于指定从哪个位置开始读取结果,也就是忽略前 OFFSET 行。
📄️ SAMPLE 子句
SAMPLE 子句允许你在基础表的样本上运行查询。这样可以显著加快查询处理速度,但会牺牲结果精度。样本也可用于在探索数据集时快速查看数据快照。SAMPLE 子句会应用在 FROM 子句内容之后(即在任意连接之后,但在 WHERE 子句或任意聚合之前)。更多信息请参见 SAMPLE 页面。
📄️ Unnest 展开
示例
📄️ WITH Clause
WITH 子句允许你定义公用表表达式(CTE)。
📄️ WINDOW Clause
WINDOW 子句允许你指定可在窗口函数中使用的命名窗口。当你有多个窗口函数时,这很有用,因为它可以避免重复书写相同的窗口子句。
📄️ QUALIFY 子句
QUALIFY 子句用于筛选 WINDOW 函数的结果。这种筛选方式类似于 HAVING 子句对基于 GROUP BY 子句应用的聚合函数结果进行筛选。
📄️ VALUES 子句
VALUES 子句用于指定固定数量的行。VALUES 可作为独立语句使用,也可作为 FROM 子句的一部分,或作为 INSERT INTO 语句的输入。
📄️ FILTER 子句
在 SELECT 语句中,FILTER 子句可以选择性地跟在聚合函数之后。它会像 WHERE 子句过滤行那样,过滤传入该聚合函数的数据行,但作用范围仅限于该特定聚合函数。
📄️ 集合操作
集合操作允许按照集合运算语义#Basicoperations)组合多个查询。集合操作包括 UNION [ALL]、INTERSECT [ALL] 和 EXCEPT [ALL] 子句。默认变体使用集合语义(即去重),带 ALL 的变体使用多重集语义。
📄️ 预处理语句
Goose 支持预处理语句:参数会在查询执行时被替换。