开发手册 欢迎您!
软件开发者资料库

Q语言 - 功能查询

Q语言功能查询 - 使用这个初学者教程,简单易学地学习KDB +,包括从概述,架构,Q编程语言,类型转换,时态数据,列表,索引,词典,表格,动词和副词开始的基础知识到高级知识,连接,函数,内置函数,查询,进程间通信,消息处理程序(.Z库),属性,功能查询,表算法,磁盘表,维护功能。

功能(动态)查询允许将列名指定为典型q-sql select/exec/delete列的符号.当我们想要动态指定列名时,它非常方便.

函数形式是 :

?[t;c;b;a]    / for select![t;c;b;a]    / for update

其中

  • t 是一张表;

  • a 是聚合字典;

  • b 按词组;和

  • c 是约束列表.

注意 :

  • a中的所有 q 实体 b c 必须按名称引用,即含有实体名称的符号.

  • select和update的句法形式由 q 解释器解析为它们的等效函数形式,因此两种形式之间没有性能差异.

功能选择

以下代码块显示了如何使用功能选择 :

q)t:([]n:`ibm`msft`samsung`apple;p:40 38 45 54)q)t    n       p-------------------   ibm     40   msft    38 samsung   45  apple    54q)select m:max p,s:sum p by name:n from t where p>36, n in `ibm`msft`apple  name |   m   s------ | --------- apple |  54  54 ibm   |  40  40 msft  |  38  38

示例1

让我们从最简单的情况开始,的功能版本选择t"看起来像 :

q)?[t;();0b;()]     / select from t    n      p-----------------   ibm    40   msft   38 samsung  45  apple   54

示例2

在下面的示例中,我们使用enlist函数创建单例以确保适当的实体是列表.

q)wherecon: enlist (>;`p;40)q)?[`t;wherecon;0b;()] / select from t where p > 40    n      p---------------- samsung  45  apple   54

示例3

q)groupby: enlist[`p] ! enlist `pq)selcols: enlist [`n]!enlist `nq)?[ `t;(); groupby;selcols]        / select n by p from t   p  |    n----- | -------  38  |  msft  40  |  ibm  45  | samsung  54  | apple

Functional Exec

exec的功能形式是选择的简化形式.

q)?[t;();();`n]                / exec n from t (functional form of exec)`ibm`msft`samsung`appleq)?[t;();`n;`p]                / exec p by n from t (functional exec)apple   | 54ibm     | 40msft    | 38samsung | 45

功能更新

更新的功能形式完全类似于选择.在下面的示例中,使用enlist是为了创建单例,以确保输入实体是列表.

q)c:enlist (>;`p;0)q)b: (enlist `n)!enlist `nq)a: (enlist `p) ! enlist (max;`p)q)![t;c;b;a]   n      p-------------  ibm    40  msft   38 samsung 45 apple   54

功能删除

功能删除是功能更新的简化形式.其语法如下 :

![t;c;0b;a]        / t is a table, c is a list of where constraints, a is a                   / list of column names

现在让我们举一个例子来说明功能删除的工作原理和减号;

q)![t; enlist (=;`p; 40); 0b;`symbol$()]                                          / delete from t where p = 40   n       p---------------  msft    38 samsung  45  apple   54