Пример данных:
+ -----+------+--------+------+------+---------+------------+--------+
| clid | cust | symbol | side | oQty | fillQty | fillPx | execid |
+ -----+------+--------+------+------+---------+------------+--------+
| 274 | C2 | INTC | SELL | 2000 | 167 | 12.09 | 1 |
| 188 | C9 | SBS | SELL | 2000 | 121 | 38.599998 | 2 |
| 155 | C1 | C | SELL | 1500 | 159 | 50.650002 | 3 |
| 294 | C5 | BMY | BUY | 2000 | 667 | 13.648224 | 4 |
| 276 | C7 | FCX | BUY | 2000 | 91 | 26.59 | 5 |
| 255 | C9 | FCX | SELL | 2000 | 231 | 26.389999 | 6 |
| 276 | C7 | FCX | BUY | 2000 | 182 | 30 | 7 |
| 277 | C1 | BMY | BUY | 2000 | 1333 | 11.61 | 8 |
| 188 | C9 | SBS | SELL | 2000 | 91 | 40.860001 | 9 |
| 133 | C5 | BMY | SELL | 5000 | 636 | 12.721739 | 10 |
| 110 | C7 | AA | BUY | 5000 | 182 | 8.359823 | 11 |
| 120 | C7 | IBM | BUY | 5000 | 111 | 72.419998 | 12 |
| 152 | C2 | BA | BUY | 1500 | 167 | 142.690002 | 13 |
| 276 | C7 | FCX | BUY | 2000 | 273 | 28.25 | 14 |
+ -----+------+--------+------+------+---------+------------+--------+
cust side symbol qty clid
C5 SELL F 2000 257
C6 BUY AMZN 1500 203
C7 BUY IBM 5000 120
C6 BUY F 5000 228
C1 BUY UNH 5000 172
C1 SELL FCX 2000 242
C8 BUY F 2000 186
C5 BUY BMY 2000 294
C1 SELL SBS 2000 212
C9 SELL SBS 2000 194
C6 SELL FB 1500 232
C3 SELL AMZN 2000 113
C9 BUY BAC 5000 102
C8 BUY BMY 5000 227
C9 SELL FB 5000 296
C2 SELL INTC 2000 274
C6 SELL C 2000 171
Клиент подаст заявку на покупку акций X, и oqty - это обработанный частичный заказ. То, что я хочу сделать, это найти количество выполненных заказов и среднюю цену заказа.
Это работает:
select clid, oQty, sum(fillqty)
from
(select clid, side, oQty, fillqty, fillpx, execid
from fills where side='buy' group by clid, fillqty) A
group by clid;
Это не работает:
select clid, oQty, sum(fillqty)
from
(select clid, side, oQty, fillqty, fillpx, execid from fills where side='buy' group by clid, fillqty) A
where oQty = sum(fillqty)
group by clid;
ОШИБКА 1111 (HY000): недопустимое использование групповой функции
Я не понимаю, почему я не могу добавить сравнение прямо перед группой ... Может кто-нибудь объяснить, почему произошла ошибка?