数据选取

托管表

数据分片存储在本地文件系统或者分布式文件系统里(以Parquet文件格式存储),且表的元数据信息也一并被持久化而不会丢失。

Table 语法

table tableName

-- 选取产品表
table product;

-- CTE,给产品表创建一个临时视图,名称为 a
with a as table product;

select * from a;

全局临时视图

临时视图是会话范围的,如果创建它的会话终止,将会消失。如果希望在所有会话之间共享一个临时视图并保持活动状态,直到服务终止,则可以创建一个全局临时视图。

View 语法

view viewName

-- 选取订单全局视图
view orders;

列举

选取、排除及删除列;相较于 column 语法一次只能构造一列,它支持批量新建与拆分列。

List 语法

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 语法

top Num [of viewName]
-- 拿主视图前10条记录
top 10;

[of viewName] 表示选取哪一个视图的记录

尾N条记录

Tail 语法

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

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 的子句

with a as
    SELECT city, sum(quantity) AS sum FROM dealer
    GROUP BY city HAVING city = 'Fremont';