2016-03-21 31 views
0

異なるユーザーによって動的しきい値を設定しようとしていますが、今日の日付からの結果のみを返します。私は過去30日からすべてのレコードを返すことができましたが、過去30日間の計算に基づいて今日の日付のみを出力することには問題があります。私はq言語が初めてで、この単純なステートメントに本当に問題があります。 )、および/またはステートメントが、実行していない...試してみましたが、事前にすべての助けをありがとう!Q(KDB)日付範囲内の今日の日付を選択する

select user, date, real*110 from table where date >= .z.D - 30, real> (3*(dev;real) fby user)+((avg;real) fby user) 

答えて

2

はあなたが今日のいずれかが「本当」の値を超える3シグマ基づいているかどうかを判断したいと言っています過去30日間に?もしそうなら(あなたのテーブル構造についてあまり知らなくても)私はあなたがこのようなものを使うことができると推測しています:

q)t:t,update user:`user2,real+(.0,39#10.0) from t:([] date:.z.D-til 40;user:`user1;real:20.1,10.0+39?.1 .0 -.1); 

q)sigma:{avg[y]+x*dev y}; 

q)select from t where date>=.z.D-30, ({(.z.D=x`date)&x[`real]>sigma[3]exec real from x where date<>.z.D};([]date;real)) fby user 
date  user real 
--------------------- 
2016.03.21 user1 20.1 
関連する問題