Top-K 投影
存储所选行的分区中的前 k 行。有关详细信息,请参阅 Top-K 投影。
语法
CREATE PROJECTION [ IF NOT EXISTS ] [[database.]schema.]projection
[ (
{ projection-column | grouped-clause
[ ENCODING encoding-type ]
[ ACCESSRANK integer ] }[,...]
) ]
AS SELECT { table-column | expr-with-table-columns }[,...] FROM [[database.]schema.]table [ [AS] alias]
LIMIT num-rows OVER ( window-partition-clause [window-order-clause] )
[ KSAFE [ k-num ] ]
参数
IF NOT EXISTS
如果存在同名对象,请不要创建它并继续。如果忽略此选项且对象存在,Vertica 将生成 ROLLBACK 错误消息。在上述两种情况下,如果对象已经存在,则不会创建它。
IF NOT EXISTS
子句适用于以下 SQL 脚本:可在某个对象不存在时创建该对象。请参阅 ON_ERROR_STOP 了解相关信息。
-
[database.]schema
为该投影及其锚表指定架构,两者的 schema 必须相同。如果指定一个数据库,它必须是当前数据库。
-
projection
标识要创建的投影,其中 projection 符合 标识符中描述的约定。同一架构中的序列、表、投影、视图和模型中也必须是唯一的。
-
projection-column
投影列的名称。投影列的列表必须在数量、类型和顺序上与 SELECT 列表列和表达式相匹配。
如果省略投影列名称,Vertica 将使用在 SELECT 列表中指定的锚表列名称。
-
grouped-clause
- 请参阅 GROUPED 子句。
-
ENCODING encoding-type
列编码类型,默认设置为 AUTO。
-
ACCESSRANK integer
覆盖列的默认访问等级。使用此参数可提高或降低 Vertica 访问列的速度。有关详细信息,请参阅覆盖默认的列等级。
AS SELECT
指定要查询的表数据:
{table-column | expr-with-table-columns } [ [AS] alias] }[,...]
您可以选择性地为每个列表达式分配一个别名,并在 SELECT 语句的其他位置引用该别名。
注意
如果指定了投影列名称,则投影列和表列/表达式的两个列表中的列数和列顺序必须完全匹配。AS SELECT
指定要查询的表数据:
{table-column | expr-with-table-columns } [ [AS] alias] }[,...]
您可以选择性地为每个列表达式分配一个别名,并在 SELECT 语句的其他位置引用该别名。
注意
如果指定了投影列名称,则投影列和表列/表达式的两个列表中的列数和列顺序必须完全匹配。-
LIMIT num‑rows
- 要从指定分区返回的行数。
-
window-partition-clause
- 指定按 SELECT 列表中的一个或多个列表达式(用逗号分隔)进行窗口分区。第一个分区表达式必须是 SELECT 列表中的第一项,第二个分区表达式必须是 SELECT 列表中的第二项,依此类推。
-
window-order-clause
- 指定前 k 行的返回顺序,默认情况下按升序 (ASC)。所有列表达式都必须来自 SELECT 列表,其中第一个窗口顺序表达式必须是未在窗口分区子句中指定的第一个 SELECT 列表项。
Top-K 投影支持 ORDER BY NULLS FIRST/LAST。
特权
非超级用户:
-
锚表所有者
-
对架构的 CREATE 权限
要求和限制
Vertica 不会将 Top-K 投影视为 超投影,即使是包含所有表列的投影也是如此。有关其他要求和限制,请参阅 创建 Top-K 投影。
示例
请参阅 Top-K 投影示例。