数据选取 =========== 托管表 ----------- 数据分片存储在本地文件系统或者分布式文件系统里(以Parquet文件格式存储),且表的元数据信息也一并被持久化而不会丢失。 Table 语法 ^^^^^^^^^^^ .. code-block:: sql table tableName -- 选取产品表 table product; -- CTE,给产品表创建一个临时视图,名称为 a with a as table product; select * from a; 全局临时视图 -------------- 临时视图是会话范围的,如果创建它的会话终止,将会消失。如果希望在所有会话之间共享一个临时视图并保持活动状态,直到服务终止,则可以创建一个全局临时视图。 View 语法 ^^^^^^^^^^ .. code-block:: sql view viewName -- 选取订单全局视图 view orders; 列举 ------- 选取、排除及删除列;相较于 ``column`` 语法一次只能构造一列,它支持批量新建与拆分列。 List 语法 ^^^^^^^^^^ .. code-block:: lua list [param] {col1, col2, col3, ..} [of viewName] -- 选取订单视图 view orders; -- 在选取的订单视图上,选取列及构造新的列 list { customer, left(mobile, 3) as mobile, month(join_time) as m}; -- 也可以使用CTE别名当前选取的结果,以备与其它别名的结果交并产生新的结果集 with o as list { customer, left(mobile, 3) as mobile, month(join_time) as m}; 支持的参数 ``[param]`` 有: ===== ======================== 名称 作用 ===== ======================== i 选取包含的列,该模式下支持新建与拆分构造列,默认 \- 选取删除的列后的所有列,该模式下不支持新建与拆分构造列 e 选取排除的列后的所有列,该模式下不支持新建与拆分构造列 ===== ======================== ``[of viewName]`` 表示需要在哪一个视图上进行选取操作。 头N条记录 ------------------ Top 语法 ^^^^^^^^^ .. code-block:: sql top Num [of viewName] -- 拿主视图前10条记录 top 10; ``[of viewName]`` 表示选取哪一个视图的记录 尾N条记录 ------------------ Tail 语法 ^^^^^^^^^ .. code-block:: sql tail Num [of viewName] -- 主视图前10条 with a as top 10; -- 某视图后10条 with b as tail 10 of someView; -- 把它们按列名相同拼接起来 align a,b; ``[of viewName]`` 表示选取哪一个视图的记录 选择 ----- 支持符合ANSI SQL标准的 ``SELECT`` 语句。查询用于从一个或多个表中检索结果集。详细语法请参考:`Select Statement `_。 .. code-block:: sql SELECT name, dept, DENSE_RANK() OVER (PARTITION BY dept ORDER BY salary ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS dense_rank FROM employees; 嗯,当然也支持作为 CTE 的子句 .. code-block:: sql with a as SELECT city, sum(quantity) AS sum FROM dealer GROUP BY city HAVING city = 'Fremont';