- KDB+ - 教程
- KDB+ - 概述
- KDB + - 架构( Architecture)
- Q编程语言(Q Programming Language)
- Q语言 - 类型转换(Type Casting)
- Q语言 - 时间数据(Temporal Data)
- Q Language - Lists
- Q语言 - 索引(Indexing)
- Q语言 - 词典(Dictionaries)
- Q Language - Table
- Q语言 - 动词和副词(Verb & Adverbs)
- Q Language - Joins
- Q语言 - 功能(Functions)
- Q语言 - 内置函数(Built-in Functions)
- Q语言 - 查询(Queries)
- Q - 进程间通信(Q - Inter-Process Communication)
- Q - Message Handler (.Z Library)
- Q语言 - 属性(Attributes)
- Q语言 - 功能查询(Functional Queries)
- Q语言 - 表算法(Table Arithmetic)
- Q语言 - 磁盘上的表(Tables on Disk)
- Q语言 - 维护功能(Maintenance Functions)
- KDB+ - 有用的资源
- KDB+ - 讨论
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
Q语言 - 功能查询(Functional Queries)
功能(动态)查询允许将列名指定为典型q-sql select/exec/delete列的符号。 当我们想要动态指定列名时,它非常方便。
功能形式是 -
?[t;c;b;a] /for select
![t;c;b;a] /for update
哪里
t是一张桌子;
a是聚合词典;
b短语; 和
c是约束列表。
注意 -
a , b和c中a所有q实体必须通过名称引用,即包含实体名称的符号。
select解释器的句法形式由q解释器解析为它们的等效函数形式,因此两种形式之间没有性能差异。
功能选择
以下代码块显示了如何使用functional select -
q)t:([]n:`ibm`msft`samsung`apple;p:40 38 45 54)
q)t
n p
-------------------
ibm 40
msft 38
samsung 45
apple 54
q)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 (Example 1)
让我们从最简单的情况开始, “select from t”的功能版本看起来像 -
q)?[t;();0b;()] /select from t
n p
-----------------
ibm 40
msft 38
samsung 45
apple 54
例子2 (Example 2)
在以下示例中,我们使用enlist函数创建单例以确保适当的实体是列表。
q)wherecon: enlist (>;`p;40)
q)?[`t;wherecon;0b;()]/select from t where p > 40
n p
----------------
samsung 45
apple 54
例子3 (Example 3)
q)groupby: enlist[`p] ! enlist `p
q)selcols: enlist [`n]!enlist `n
q)?[ `t;(); groupby;selcols] /select n by p from t
p | n
----- | -------
38 | msft
40 | ibm
45 | samsung
54 | apple
功能执行
exec的功能形式是select的简化形式。
q)?[t;();();`n] /exec n from t (functional form of exec)
`ibm`msft`samsung`apple
q)?[t;();`n;`p] /exec p by n from t (functional exec)
apple | 54
ibm | 40
msft | 38
samsung | 45
功能更新
更新的功能形式完全类似于select的功能形式。 在以下示例中,使用enlist是为了创建单例,以确保输入实体是列表。
q)c:enlist (>;`p;0)
q)b: (enlist `n)!enlist `n
q)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
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论