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

Q语言 - 查询

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

q 中的查询更短更简单,并扩展了sql的功能.主查询表达式是'select expression',它以最简单的形式提取子表,但也可以创建新列.

选择表达式的一般形式如下 :

Select columns by columns from table where conditions


**注意 : 由&其中短语是可选的,只有'from expression'是强制性的.

一般来说,语法为 :

select [a] [by b] from t [where c]update [a] [by b] from t [where c]   Select all IBM trades


*在特定时间范围内按降序计算所有符号的数量

`numsym xasc select numsym: count i by sym from trade where date within 2014.08.07 2014.08.11


* IBM股票在特定时间范围内的最高价格是什么,以及何时首次发生?

select time,ask from quote where date within 2014.08.07 2014.08.11,sym =`IBM, ask = exec first ask from select max ask from quote wheresym =`IBM


以小时为单位选择每个sym的最后价格

select last price by hour:time.hh, sym from trade


带汇总的查询

*计算所有符号的vwap(体积加权平均价格)

select vwap:size wavg price by sym from trade


*计算特定月份的记录数(以百万计)

(select trade:1e-6*count i by date.dd from trade where date.month=2014.08m) + select quote:1e-6*count i by date.dd from quote where date.month=2014.08m


* HLOC  - 每日高,低,开,关闭CSCO某个月

select high:max price,low:min price,open:first price,close:last price by date.dd from trade where date.month=2014.08m,sym =`CSCO


*某个月CSCO的每日Vwap

select vwap:size wavg price by date.dd from trade where date.month = 2014.08m ,sym = `CSCO


*计算每小时AIG价格的均值,方差和标准差

select mean:avg price, variance:var price, stdDev:dev price by date, hour:time.hh from trade where sym = `AIG


选择每小时桶的价格范围

select range:max[price] – min price by date,sym,hour:time.hh from trade


* CSCO在某个月的每日点差(平均买入价)

select spread:avg bid-ask by date.dd from quote where date.month = 2014.08m, sym = `CSCO


*某个月内所有syms的每日交易价值

select dtv:sum size by date,sym from trade where date.month = 2014.08m


为CSCO提取5分钟vwap

select size wavg price by 5 xbar time.minute from trade where sym = `CSCO


*为CSCO提取10分钟的酒吧

select high:max price,low:min price,close:last price by date, 10 xbar time.minute from trade where sym = `CSCO


*查找价格超过特定日CSCO最后价格100个基点(100e-4)的时间

select time from trade where date = 2014.08.11,sym = `CSCO,price > 1.01*last price


* MSFT的全天价格和交易量,1分钟间隔对于数据库中的最后一个日期

select last price,last size by time.minute from trade where date = last date, sym = `MSFT