У меня есть база данных торговли запасами (имя «ТРЕЙДЫ»), и я долго пытаюсь сделать простой цикл (с функцией EACH), который суммирует все величины, которые превышают pre -определенный порог количества для каждого ISIN. Данные выглядит следующим образом:Петля с EACH в Q KDB +
q) select TIME, PRICE, QUANTITY from TRADES where ISIN=`IT123
TIME PRICE QUANTITY
8:58:05 9.47 66
9:00:09 9.47 55
9:00:56 9.48 107
9:01:06 9.49 7
9:01:33 9.50 9
9:03:11 9.07 200
9:06:27 9.07 100
9:07:46 9.12 65...
Сначала я пытаюсь этот код для одного ISIN:
q) myquant: ([] qu: 1 + til 100) //pre-define quantities from 1 to 100
q) f:{[x] (select sum QUANTITY from TRADES where ISIN=`IT123, QUANTITY> x)}
q) f each myquant.qu //use function EACH for all x that are in myquant
И тогда я получаю некоторые иероглифы ... Может быть, это потому, что список ошибочно указано?
Мне также нужно делать эти вычисления не только для одного, но и для всех ISIN, которые у меня есть в базе данных (т. Е. «КАЖДЫЙ отличный ISIN»).
Большое спасибо за помощь заранее.
Отлично, спасибо! Также, возможно, вы знаете, как делать несколько циклов, например. делать одни и те же вычисления только для подмножества ISIN (US0378331005, US5949181045)? А также, как показать 0, если сумма каких-либо сумм в некоторых minQty (это будет случай, когда minQty становится все больше и больше, и сумма не суммируется)? Еще раз спасибо! – Linas