Я решаю классическую проблему fby, чтобы найти максимальную цену за символ из торговой таблицы.
table: tr
time sym src price size
-------------------------------------------------
2019.03.11D09:00:00.277000000 GOOG L 36.01 1427
2019.03.11D09:00:04.123000000 GOOG O 36.01 708
2019.03.11D09:00:08.123000000 MSFT N 35.5 7810
2019.03.11D09:00:10.123000000 MSFT O 31.1 1100
когда я применяю fby:
select from tr where price=(max;price) fby sym
Вывод:
time sym src price size
-------------------------------------------------
2019.03.11D09:00:00.277000000 GOOG L 36.01 1427
2019.03.11D09:00:04.123000000 GOOG O 36.01 708
2019.03.11D09:00:08.123000000 MSFT N 35.5 7810
Но, как мы можем видеть, я получаю sym GOOG сделку дважды, так как максимальная цена одинакова.Следовательно, теперь я хочу получить вывод за sym с последним временем торговли каждого символа (вместе с максимальной ценой).Итак, я использую запрос ниже
select from (select from tr where price=(max;price) fby sym) where time=(last;time) fby sym
, чтобы получить результат:
time sym src price size
-------------------------------------------------
2019.03.11D09:00:04.123000000 GOOG O 36.01 708
2019.03.11D09:00:08.123000000 MSFT N 35.5 7810
Есть ли лучший / оптимизированный способ написать запрос выше, который использует select / fby дважды?