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