2015-10-19 5 views

ответ

2

Вы можете попробовать это:

q)select from t where i in raze exec 2#i by sym from t 
sym val 
------- 
a 0 
a 1 
b 4 
b 5 
+0

Спасибо. Это работает, но приведенное выше решение fby кажется более интуитивным для меня. ;-) – ph0603

+0

Я согласен с тем, что мое решение придется сканировать таблицу дважды: D –

4

Можно использовать FBY:

q)select from bb where ({x in 2#x};i) fby sym 
sym val 
------- 
a 0 
a 1 
b 4 
b 5 
+0

Спасибо. Это работает! – ph0603

+0

Нет проблем. Однако имейте в виду, что это решение (вместе с другим размещенным) предполагает, что ваша таблица находится в памяти. Для запросов на диске это, очевидно, будет немного отличаться. – terrylynch

+0

Возможно ли обновить запрос, чтобы он 1) возвращал только первые 100 записей, если группа имеет более 100 записей. 2) возвращает все записи, если число записей для данной группы меньше 100. Что-то вроде select [100] from ... – ph0603

Смежные вопросы