日付、記号、サイズを列として持つテーブルがあるとします。日付は昇順になり、サイズは降順に日付ごとに表示されます。どのようにしてテーブルを消化するのですか?毎日、最少の数しかないと言います。より簡単にコマンドを実行できます。kdbを使用して日付の上位レコード数を出力する
ありがとうございます!表考える
日付、記号、サイズを列として持つテーブルがあるとします。日付は昇順になり、サイズは降順に日付ごとに表示されます。どのようにしてテーブルを消化するのですか?毎日、最少の数しかないと言います。より簡単にコマンドを実行できます。kdbを使用して日付の上位レコード数を出力する
ありがとうございます!表考える
:
q)show tbl:`date`val!/:(.z.d+til 3) cross 100+til 25;
date val
--------------
2016.10.31 100
2016.10.31 101
2016.10.31 102
2016.10.31 103
2016.10.31 104
..
日付で最初のn行を選択: - 各インデックスを含む辞書を返します(N =実施例以下では2)
q)select from tbl where i in{raze y sublist/:group x}[date;2]
date val
--------------
2016.10.31 100
2016.10.31 101
2016.11.01 100
2016.11.01 101
2016.11.02 100
2016.11.02 101
はgroup
関数を使用します一意の値が発生します。この関数は、一意の値ごとに最初のN個のインデックス(sublist)を取得します。
NB:i
は、kdbテーブルの暗黙の行インデックスです。
'fby'も良いオプションであり、グループの操作/集計が必要な場合に一般的に使用されます。あなたの例で
http://code.kx.com/q/ref/qsql/#fby
、テーブルはまだトップ10行が所望の結果を与えるフェッチ各日付の順序を降順に「サイズ」COLを有しているからです。
q) select from tbl where ({x in 10#x};i) fby date