2
集計の合計が0のすべてのグループを除外するにはどうすればよいですか?SQLAlchemy:集計後にフィルターをかける方法
q = session.query(Trades.ticker, func.sum(Trades.shares))
g = q.group_by(Trades.ticker)
f = g.filter(func.sum(Trades.shares) != 0)
result = f.all()
これは、3行目のエラーがスローされます。
... sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) misuse of aggregate: sum() ...
この問題を回避するには、フィルタを削除して行うことです。
result = [x for x in g.all() if x[1] != 0.0]
しかし、これは、SQLクエリをフィルタに比べて非常に遅いです。
は(簡単にするために編集しました。)
やや関連:https://stackoverflow.com/questions/648083/sql-error-misuse-of-aggregate –