查询语法

查询语法涵盖 SELECT 语句的完整语法,包括 JOIN、聚合、窗口函数、Time Travel 历史查询和执行计划分析。


本章内容

页面说明
SELECT 基础语法SELECT、FROM、WHERE、ORDER BY、LIMIT 的完整语法
WITH(公用表表达式)CTE 语法,将子查询命名后复用,提升可读性
JOININNER/LEFT/RIGHT/FULL/CROSS JOIN 语法和示例
Map Join强制小表广播的 JOIN 优化提示
LATERAL VIEW展开数组或 Map 列,与 explode/posexplode 配合使用
GROUP BY聚合分组,支持 ROLLUP、CUBE、GROUPING SETS
窗口函数OVER 子句、PARTITION BY、ORDER BY、窗口帧定义
TABLESAMPLE对表进行随机采样,用于快速数据探查
QUALIFY对窗口函数结果进行过滤,等价于在窗口函数外套 WHERE
集合操作(UNION/INTERSECT/EXCEPT)多个查询结果的合并、交集和差集
VALUES内联数据,无需建表直接构造行集合
TIME TRAVEL查询表的历史版本数据,支持按时间戳或版本号
EXPLAIN查看查询执行计划,用于性能分析和优化

常用操作

基础查询

-- 带过滤和排序的查询 SELECT order_id, customer_id, amount FROM public.orders WHERE created_at >= '2024-01-01' ORDER BY amount DESC LIMIT 100;

CTE(公用表表达式)

WITH monthly_sales AS ( SELECT DATE_TRUNC('month', order_date) AS month, SUM(amount) AS total FROM orders GROUP BY 1 ) SELECT month, total, total - LAG(total) OVER (ORDER BY month) AS mom_change FROM monthly_sales;

窗口函数

-- 分组排名 SELECT customer_id, order_id, amount, RANK() OVER (PARTITION BY customer_id ORDER BY amount DESC) AS rank_in_customer FROM orders; -- 滑动平均 SELECT order_date, amount, AVG(amount) OVER (ORDER BY order_date ROWS BETWEEN 6 PRECEDING AND CURRENT ROW) AS avg_7d FROM daily_sales;

Time Travel

-- 查询指定时间点的历史数据 SELECT * FROM orders TIMESTAMP AS OF '2024-01-15 00:00:00'; -- 查询指定版本的历史数据 SELECT * FROM orders VERSION AS OF 5;

EXPLAIN

-- 查看执行计划 EXPLAIN SELECT * FROM orders JOIN customers ON orders.customer_id = customers.id;


相关文档

文档说明
SQL 命令总览所有 SQL 命令分类导航
Time Travel 使用指南Time Travel 的完整使用场景和注意事项
SQL 函数内置函数完整参考

联系我们
预约咨询
微信咨询
电话咨询